一、异常的体系结构
Throwable(最顶层)
包:java.lang
二、异常的处理方式
1.人为处理:
捕获处理:try…chatch语句
try{
可能出现问题的代码;
}catch(异常){
处理异常;
}
注意:首先执行try语句,如果发现异常,异常下面的代码不再执行,直接跳入catch语句中,catch语句结束后,整个try.....catch结束。
如果没有发现异常,try语句执行后,不在执行catch。
2.当我们不想处理异常时或者没有能力处理时,选择抛出异常,使用throws,谁调用谁抛出。
3.jvm(虚拟机)处理异常的方式:
如果出现异常我们没有处理,jvm帮我们处理,他会把异常的类型、原因还有位置显示在命令行,并且终止程序,异常后面的代码将不再执行。
三、如何处理多个异常?
try{
出现问题的语句1;
出现问题的语句2;//不执行
}catch(异常1){
}catch(异常2){//不执行
处理异常1;
处理异常2;//不执行
}
四、Throwable的常用方法
String getMessage();输出原因
String toString();类型和原因
void printStackTrace()类型和原因、位置
都是直接用
try{
System.out.println(2/0);
}catch(ArithmeticException e){
System.out.println(e.getMessage());
...
}
五、异常的分类
运行时异常:RuntimeException的子类就是运行时异常,在编译时期可以选择处理或者不处理。
编译时异常:Exception的子类,并且不是RuntimeException的子类是运行异常,编译时期必须处理。
六、自定义异常