异常

Java异常是一个对象,所有异常都直接或间接的继承Throwable类,异常层次结构如图:

Error类代表错误,指程序无法恢复的异常情况,常见的Error类例如内存溢出StackOverflowError等。

Exception类代表异常,指程序有可能恢复的异常情况,分为RuntimeException和checkedException两种。

checkedException可检查异常,需要在编码时进行处理的,如IOException等。

RuntimeException运行时异常,是在程序运行时发生的异常,无法预先捕捉处理。

异常经常通过try catch语句块来进行处理,也可以通过throws/throw将错误抛出到上层处理

finally用在catch语句块后面,无论是否发生异常,finally代码块总会被执行

在jdk7之后,提供了语法糖,更优雅的解决方式 try-with-resource

try (FileInputStream inputStream = new FileInputStream(new File("test"))) {
    System.out.println(inputStream.read());
} catch (IOException e) {
    throw new RuntimeException(e.getMessage(), e);
}

 对代码反编译发现仍使用了finally进行处理

可以通过继承已有的Exception类来自定义异常,通常使用try catch捕获处理,如果需要向外抛出,可继承RuntimeException类

spring中可以通过注解@ControllerAdvice,@ExceptionHandler(Exception.class)来自定义异常处理

原文地址:https://www.cnblogs.com/jhin-wxy/p/11494717.html