在代码运行过程中会遇到很多问题,难以依靠代码避免,如网络是否通常,用户输入格式,读取文件是否存在等。
java中异常主要分为两大类
- Error:java虚拟机无法解决的严重问题
- Exception:常说的异常,分为编译时异常和运行时异常(RuntimeException)
java 异常体系结构图,如下图所示。
异常处理
java提供抓抛模型
- 抛:分为系统自动抛和手动抛两种
- 抓:分为try-catch抓和throws
注意点
- try-catch后,如果所有异常都被抓住或处理,则后续代码仍照常执行。但是很容易发生有异常每捕获的问题,所有finally产生。
- 继承时,子类重载时,抛出的异常应比父类小,不然父类罩不住。
@Test
public void test1(){
try{
System.out.println(10 / 0);
System.out.println("发生异常,无法执行");
}catch(ArithmeticException e){
e.printStackTrace();
}
System.out.println("异常捕获后,正常执行");
}
自定义异常类
public class MyException extends Exception{
private static final long serialVersionUID = 1893002618672287524L;
public MyException() {
}
public MyException(String msg){
super(msg);
}
}