.Java异常
?异常(Exception)
1.? Java中的异常分为两大类:
???? a)? Checked exception? (非? Runtime Exception)
???? b)? Unchecked exception(Runtime Exception)
2.??Java中所有的异常类都会直接或间接地继承自Exception。
3.? RuntimeException类也是直接继承自 Exception类,它叫做运行时异常,Java中所有的运行时异常都会直接或间接
???? 地继承自 RuntimeException。
4.? Java 中凡是继承自 Exception 而不是继承自 RuntimeException 的类都是非运行时异常。
5. 异常处理的一般结构是:
try { } catch(Exception e) { } finally { } ??? 无论程序是否出现异常,finally 块中的代码都是会被执行的。
6. 对于非运行时异常(checked exception) ,必须要对其进行处理,处理方式有两种:
??? 第一种是使用 try.. catch…finally 进行捕获;第二种是在调用该会产生异常的方法所在的方法声明
?? ?throws Exception
7. 对于运行时异常(runtime exception) ,我们可以不对其进行处理,也可以对其进行处理。推荐不对其进行处理。
8.?NullPointerException 是空指针异常,出现该异常的原因在于某个引用为 null,但你却调用了它的某个方法。这时就
??? 会出现该异常。
9.? 所谓自定义异常,通常就是定义了一个继承自 Exception类的子类,那么这个类就是一个自定义异常类。通常情况
????下,我们都会直接继承自 Exception类,一般不会继承某个运行时的异常类。
10.? 我们可以使用多个 catch块来捕获异常,这时需要将父类型的 catch块放到子类型的catch 块之后,这样才能保证后
?????续的 catch 可能被执行,否则子类型的 catch 将永远无法到达,Java 编译器会报编译错误;如果多个 catch 块的
?????异常类型是独立的(MyException, MyException2),? 那么谁前谁后都是可以的。
11.? 如果 try 块中存在 return 语句,那么首先也需要将 finally 块中的代码执行完毕,然后方法再返回。
12.? 如果 try 块中存在 System.exit(0)语句,那么就不会执行 finally 块中的代码,因为System.exit(0)会终止当前运
?????行的 Java虚拟机,程序会在虚拟机终止前结束执行。