检查性异常:编译时无法忽略
运行时异常:编译可忽略,运行时才能发现
ERROR: 严重错误,jvm生成抛出,基本和编写代码无关
异常体系结构:
不检查异常:程序可选择捕获或者不处理:
关键字:fynally可要可不要,catch里面的参数是捕获的异常类型,如ArithmeticException不能捕获error,但是Throwable可以捕获。
public void run() {
try{
int a = 0;
int b = 1;
System.out.println(b/a);
}catch(ArithmeticException e){
System.out.println("arithmetic error");
}finally{
System.out.println("finally");
}
}
捕获多个异常:异常等级需要从小到大(Error<Throwable)
快捷键Ctrl+Alt+T,选中代码进行快速编写:
throw在方法里主动抛出异常,throws在方法上抛出:
自定义异常:
自定义的类需要继承Exception:
public class MyException1 extends Exception{
private int a ;
public void MyException(int b){
this.a = b;
}
@Override
public String toString() {
return "MyException1{" +
"a=" + a +
'}';
}
}