Spring异常处理
无规则不成方圆,很多人知道这句话,但是做到的很少,因为随性,开发写BUG实际中,经常有这样那样的错误,怎么把错误统一起来,怎么收集一个错误,这是最关键的,这里抛开日志的记录,那些是单独话题,这里我说如何优雅的异常处理。优雅是相对而言,我们这里要做的就是不那么喽,就是不要控制器中出现大片的try..cach..这样的语句
,有的甚至说不控制不就可以了吗?不控制更危险,因为不控制随意显示,有可能导致直接解散!
异常处理必备知识:
@ControllerAdvice
这个其实看源码就知道,他其实是@Compoent
他在运行的时候其实就会是一个Bean
@ExceptionHandler
通过这个注解的value属性,我们能指定我们要拦截的异常,这里指定根方法,进行所有异常的拦截,当然也可以单独拦截某一种异常,后边我会讲到
优雅处理错误步骤
①做一个美观的错误页面
②添加一个ControllerAdvice控制器,用来拦截所有异常
③人为去制造一个错误
做一个美观的错误页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>错误显示DEMO</title>
</head>
<body>
${erroMsg}
</body>
</html>
定义ControllerAdvice
控制器
@ControllerAdvice
public class ExceptionDemo {
@ExceptionHandler(value = Exception.class)
public ModelAndView exception(Exception exception, WebRequest request) {
ModelAndView modelAndView = new ModelAndView("error");
modelAndView.addObject("erroMsg", exception.getMessage());
return modelAndView;
}
}
造一个错误来测试
@Controller
public class DemoController {
@RequestMapping("/advice")
public String demo() throws IllegalAccessException {
throw new IllegalAccessException("sulwan");
}
}
测试效果
预览这个地址,应该就看见了我们自定义错误消息显示到页面去了!
网友评论