一、异常完成及分类
1.先看下异常类的结构图
上图能够简朴展现一下异常类完成结构图,固然上图不是一切的异常,用户自身也能够自定义异常完成。上图已充足帮我们诠释和明白异常完成了:
java相干免费视频教程:java教授教养视频
1.一切的异常都是从Throwable继续而来的,它是一切异常的配合先人。
2.Throwable
有两个子类,Error
和Exception
。
个中Error是毛病,关于一切的编译时代的毛病以及体系毛病都是经由过程Error抛出的。这些毛病示意毛病发作于虚拟机自身、或许发作在虚拟机试图实行应用时,如Java虚拟机运转毛病(Virtual MachineError
)、类定义毛病(NoClassDefFoundError
)等。
这些毛病是不可查的,由于它们在应用顺序的掌握和处置惩罚才能之外,而且绝大多数是顺序运转时不允许涌现的状态。关于设想合理的应用顺序来讲,纵然确切发作了毛病,本质上也不应该试图去处置惩罚它所引发的异常状态。在 Java中,毛病经由过程Error的子类形貌。
3.Exception
是别的一个异常重要的异常子类。它划定的异常是顺序自身能够处置惩罚的异常。
异常和毛病的区别是,异常是能够被处置惩罚的,而毛病是没法处置惩罚的。
4.Checked Exception
可搜检的异常,这是编码时异常经常运用的,一切checked exception都是需要在代码中处置惩罚的。它们的发作是能够展望的,一般的一种状况,能够合理的处置惩罚,比方IOException
,或许一些自定义的异常。除了RuntimeException
及其子类之外,都是checked exception。
5.Unchecked Exception
RuntimeException
及其子类都是unchecked exception。比方NPE空指针异常,除数为0的算数异常ArithmeticException
等等,这类异常是运转时发作,没法预先捕捉处置惩罚的。Error也是unchecked exception,也是没法预先处置惩罚的。
二、异常的处置惩罚
代码中的异常处置惩罚实际上是对可搜检异常的处置惩罚。
1. 经由过程try...catch语句块来处置惩罚:
try { // 顺序代码 }catch(ExceptionName e1) { //Catch 块 }
Catch 语句包括要捕捉异常范例的声明。当庇护代码块中发作一个异常时,try 背面的 catch 块就会被搜检。
假如发作的异常包括在 catch 块中,异常会被通报到该 catch 块,这和通报一个参数到要领是一样。
2. 别的,也能够在细致位置不处置惩罚,直接抛出,经由过程throws/throw到上层再举行处置惩罚,细致的,假如一个要领没有捕捉到一个搜检性异常,那末该要领必需运用 throws 关键字来声明。
throws 关键字放在要领署名的尾部。也能够运用 throw 关键字抛出一个异常,不管它是新实例化的照样刚捕捉到的。
下面要领的声明抛出一个 RemoteException 异常:
import java.io.*; public class className { public void deposit(double amount) throws RemoteException { // Method implementation throw new RemoteException(); } //Remainder of class definition }
3. finally关键字
finally 关键字用来创建在 try 代码块背面实行的代码块。不管是不是发作异常,finally 代码块中的代码总会被实行。在 finally 代码块中,能够运转清算范例等扫尾善后性子的语句。
finally 代码块涌现在 catch 代码块末了,语法以下:
try{ // 顺序代码 }catch(异常范例1 异常的变量名1){ // 顺序代码 }catch(异常范例2 异常的变量名2){ // 顺序代码 }finally{ // 顺序代码 }
java相干文章教程引荐:java入门顺序
以上就是java中异常范例及异常处置惩罚的细致引见的细致内容,更多请关注ki4网别的相干文章!