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:使用该注解表示开启了全局异常的捕获;

 

参考链接

【1】Java 异常处理概念及最佳实战

【2】SpringBoot 全局异常处理

【3】全局异常处理Demo

posted @ 2023-05-08 15:21  先娶国王后取经  阅读(17)  评论(0编辑  收藏  举报