1、异常类层级关系:
父级接口 Throwable
Exception(异常基类)
RuntimeException(运行时异常)
Error -- 错误(栈溢出等jvm抛出的错误)
2、异常分类:
Exception:
RuntimeException:运行时异常,非受检异常,非受检异常不要求在编写代码时处理
其他非RuntimeException:编译时异常,受检异常,受检异常要求在编写代码时明确处理
3、throws:
在方法末尾 生命方法可能抛出的异常,用于提示调用方进行处理
如果throws RuntimeException(非受检异常),不要求调用方在编写代码时明确处理
如果throws 非RuntimeException(受检异常),要求调用方在编写代码时明确处理
public void method2() {
method1();
try {
method3();
} catch (Exception e) {
}
}
/**
* 非受检异常
*/
public void method1() throws NumberFormatException {}
/**
* 受检异常
*/
public void method3() throws ParseException {}
4、throw关键字
throw new Exception();当前方法不处理异常,向调用方抛出,让调用方处理
如果throw 一个非RuntimeException(受检异常),需要使用throws在方法处声明
如果throw RuntimeException(非受检异常),无须使用throws在方法处声明
public void method1() throws ParseException {
throw new ParseException("哈哈哈哈", 1);
}
public void method2() {
throw new RuntimeException();
}