1.1Throwable对象派生出两种类型:
image

Error和Exception,前者用来表示编译时和系统错误,程序员往往不必关心;后者是可以被抛出的基本类型,需要程序员关注.
Java异常(Exception)按照编译器检查方式可以分为:
检查型异常(CheckedException)和非检查型异常(UncheckedException)。

1.2检查型异常(CheckedException)

在Java中所有不是RuntimeException派生的Exception都是检查型异常。当函数中存在抛出检查型异常的操作时该函数的函数声明中必须包含throws语句。调用该函数的函数也必须对该异常进行处理(try-catch),如不进行处理则必须在调用函数上声明throws语句。

   检查型异常是JAVA首创的,在编译期对异常的处理有强制性的要求。在JDK代码中大量的异常属于检查型异常,包括IOException,SQLException等等。  
   

1.3非检查型异常(UncheckedException)

       在Java中所有RuntimeException的派生类都是非检查型异常,与检查型异常相对抛出非检查型异常可以不在函数声明中添加throws语句,调用函数上也不需要强制处理。

       常见的NullPointException,ClassCastException是常见的非检查型异常。非检查型异常 可以不使用try...catch进行处理,但是如果有异常产生,则异常将由JVM进行处理。对于RuntimeException的子类最好也使用异常处理机制。虽然RuntimeException的异常可以不使用try...catch进行处理,但是如果一旦发生异常,则肯定会导致程序中断执行,所以,为了保证程序再出错后依然可以执行,在开发代码时最好使用try...catch的异常处理机制进行处理。
1.4 自定义异常

继承自Exception或者RuntimeException,只需要提供无参构造和一个带参构造即可
/**IllegalAgeException:自定义异常,继承自Exception或者RuntimeException  */
//默认构造器
public IllegalAgeException(){}
//带有详细信息的构造器,信息存在messgae中
public IllegalAgeException(String message){
       super(message);
}

1.5 finally关键字
finally用于释放资源,它的代码永远会执行。特殊情况:在执行到finally之前jvm退出了
image


龚生
7 声望1 粉丝