@ControllerAdvice跟@ExceptionHandler配合使用,达到控制全局异常的效果。
1. 配置controller
这里直接把接收到的exception传给日志,会打印e.printStackTrace的内容,便于调试。
@ControllerAdvice
@Controller
public class TestExceptionController {
Logger logger = LoggerFactory.getLogger(TestExceptionController.class);
@ExceptionHandler(Exception.class)
public String showErr(Exception e) {
logger.error("error message: {}", e);
return "exception";
}
@ResponseBody
@RequestMapping("error")
public String withError() {
int a = 1/0;
return "error.";
}
}
访问https://localhost:8443/test/error,触发java.lang.ArithmeticException: / by zero
可以看到错误信息被打印到日志