SpringBoot 异常处理
异常分类
- 检查异常:手动处理(try-catch、throws)
- 非检查异常:不用显式去处理,自动会被全局异常处理器捕获
异常打印的常用函数
e.getMessage()
e.getCause().getMessage()
printStackTrace()
检查异常的两种处理方式
方式一
try-catch捕获
public String index(){
try {
throw new IOException("test");
} catch (IOException e) {
System.out.println("index");
}
return "index";
}
方式二
由调用该方法的方法处理该异常
public String index() throws IOException {
throw new IOException("test");
}
自定义异常
自定义检查异常
public class MyException extends Exception{
public MyException() {
super();
}
public MyException(String message) {
super(message);
}
}
自定义非检查异常
public class MyException extends RuntimeException{
public MyException() {
super();
}
public MyException(String message) {
super(message);
}
}
try-catch-finally
- finally中的代码块一定会被执行
- 如果finally 块中有 return 关键字,那么 try 块以及 catch 块中的 return 都将会失效,所以在开发的过程中不应该在 finally 块中写 return 语句
- 如果在 finally 块中没有 return 语句,那么无论在 finally 代码块中是否修改返回值,返回值都不会改变,仍然是执行 finally 代码块之前的值
try-with-resources
关闭资源
全局异常处理
@ControllerAdvice:使用该注解表示开启了全局异常的捕获;
参考链接
【3】全局异常处理Demo