SpringBoot的全局异常异常处理主要涉及以下三个注解
1.ControllerAdvice
Component的增强版,它的范围是类,接口,枚举
2.ExceptionHandler注解
异常处理注解,添加了此注解的方法,会被拉入处理异常的Mapper中,在异常发生时,根据异常的类型来匹配方法,此注解范围只在方法上。
例:
@ControllerAdvice
@ResponseBody
public class GlobalDefaultExceptionHandler {
@ExceptionHandler(Exception.class)//处理Exception的异常,当然,你可以指定其它的异常,例如:NullPointerException等
@ResponseStatus
public String defaultExceptionHandler(HttpServletRequest req,Object Handler,Exception e){
return "服务端异常"; //如果返回不是json,那么就要有匹配的view才行,否则返回的还是默认的异常页面
}
}
测试:
写一个除数为0异常
@RestController
@RequestMapping("/demo")
public class DemoController {
@Value("${name}")
private String name;
@RequestMapping(value = "/getDemo" ,method = RequestMethod.GET)
public Demo getDemo(){
int a=1/0;
Demo demo = new Demo();
demo.setId(1000);
demo.setName("name12");
return demo;
}
}
结果: