1.Throwable是所有Error和Exception的父类。
2.Error错误:程序员无法通过程序对Error进行处理
3.Exception异常:程序员可以通过代码对异常进行处理,或预防异常。
4.异常分类:
- 捕获性异常(除RuntimeException其余都是)
- 非捕获性异常(运行时异常)RuntimeException
5.捕获性异常必须在程序中进行捕获,否则编译无法通过
6.RuntimeException可以捕获也可以不捕获,不捕获也编译不会报错,但有时会抛出异常
7.捕获异常:try/catch关键字进行捕获
public void exception(){
try {
String str = null;
str.toCharArray();
//int i = 10 / 0 ;
} catch(NullPointerException e){
//catch用于处理异常,只有发生异常才会执行的语句
System.out.println("发生空指针异常");
}finally {
//finally块中用于存放:无论代码是否出现异常 都要去执行的代码
System.out.println("finally");
}
}
8.抛出异常:当不想处理异常时throws关键字进行异常抛出
public void exception()throws NullPointerException{
String str = null;
str.toCharArray();
}
9.如果不对异常进行处理或连续抛出异常最终将抛出到jvm中,当jvm接收到异常信息将强制结束程序,并打印异常信息
10.一个try语句可以有多个catch语句,catch异常处理应该是平级关系或由小到大,否则出现错误
11.当出现非RuntimeException有两种处理方案
- 使用throws关键字抛出异常
- 内部消化(try/catch处理)
12.自定义异常:继承Exception或RuntimeException内部可以不写方法
public class WowException extends Exception{
//这是一个非RuntimeException异常
}
public class WowException extends RuntimeException{
//这是一个RuntimeException异常
}
13.引发异常:throw关键字能引发异常
try {
throw new WowException();
} catch (WowException e) {
e.printStackTrace();//打印异常信息
}