java的中异常祖先是Throwable,Throwable的直接子类是Exception和Error
Exception和Error不同,Error是编译错误,Exception是异常
异常捕获
try {
//肯能发生异常的代码块
}catch(异常类型 1 e) {
//异常处理1
}catch(异常类型 2 e) {
//异常处理2
}
finally {
//异常处理
}
捕获异常后,catch从上到下检查,检查到后不在往下执行,所以子类已更改放下面,父类放下面
finally代码块是异常处理中一定会执行的代码块,就算没得异常也会执行
思考
下面代码 hello world 会执行么?
try {
}catch() {
}
return 0;
finally {
System.out.priny("hello world"):
}
即便有return,也要先执行finally,然后return;
自定义异常
1、抛出异常
throw new MyException(".....");
public class MyException extends Exception{
public MyException(String s) {
super(s);
}
}
2、声明异常
throws MyException