Spring 中全局异常处理 @ExceptionHandler

最近在项目中整理了一些关于 Springboot Spring Exception 处理, 记录下来也分享给其他需要的人.

学习全局异常处理之前, 首先我们来了解两个注解. @ControllerAdvice 和 @ExceptionHandler

 

@ControllerAdvice : 可以显式声明为 Spring beans 或通过类路径扫描自动检测.

其实可以理解成 @ControllerAdvice 和 @Component 一样可以实现依赖注入.

 

@ExceptionHandler 会接受并处理 @RequestMapping 方法中抛出的异常. 下面的代码就展示了一个定义在 Controller 内部的 @ExceptionHandler 方法.


@Controller
public class SimpleController {


    @ExceptionHandler(IOException.class)
    @RequestMapping("/test")
    public ResponseEntity handleIOException(IOException ex) {
        
        return responseEntity;
    }
}

当然了,我们说了要做全局的异常处理, 上面只是处理了一个方法的Exception,这不是我们想要的.全局Exception看下面


/**
 * @author: ZhangGuihong
 * @Date: 2018/9/19 22:59
 */
@ControllerAdvice
public class ExceptionHandler {

    // Exception.class 是我们想要捕获的异常类,根据业务需要也可以换成其他异常类   
    @ExceptionHandler(Exception.class)
    @ResponseBody
    public Object ExceptionHandler(Exception e) {

        
        // 这里可以写一下适合你项目的异常处理  
        return "Samething is wrong!";
    }
}
这样在 web 项目中所有在 Controller 中抛出的异常都在在这里进行处理,我们也就做到了全局的异常处理.

你可能感兴趣的:(日常)