throw抛出异常
Exception:编译期异常(必须处理)
RuntimeException:运行期异常(可以不处理,默认给虚拟机处理—中断)
异常处理方式:
1.声明异常throws(抛出异常)
格式(例):不处理异常,将异常抛出,由调用者来处理(虚拟机JVM)
public static void main(String[] args) throws IOException {
...
}
2.捕获异常try...catch
try {
//可能会产生异常的代码
} catch (IOException e) {
//异常的处理逻辑
}finally{//可略
//无论是否出现异常,都会执行(一般用来资源释放)
//只有在try或catch中调用退出JVM的相关方法,此时finally不执行,否则必执行
//若finally有return语句,则会永远返回finally中的结果,故避免在finally中使用return
}
Throwable类中三种获取异常信息的方法:
public String get Message() //提示给用户的时候使用
public String toString() //基本不用
public void printStackTrace() //开发和调试阶段使用
多个异常使用捕获处理的三种方式:
1.多个异常分别处理
2.多个异常一次捕获,多次处理 (一般使用)
使用一个try,多个catch
注意:catch中定义的异常变量,若有子父类关系,子类必须在上边
(因为try抛出的异常会从上到依次赋值catch处理,若父类在上,处理子类异常的catch永远使用不到)
3.多次异常一次捕获,一次处理
子类异常处理需要与父类一致。
自定义异常类:
1.类名末位为Exception 并继承Exception(编译器异常)或RuntimeException(运行期异常)
2.添加空参构造,和String message参数构造