springMVC 全局异常处理

来源:互联网 发布:我国2016车祸死亡数据 编辑:程序博客网 时间:2024/04/29 10:38

早期对于异常的全局处理是在配置中写的,如下:

<!-- 全局异常配置 start --><bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"><property name="exceptionMappings"><props><prop key="java.lang.Exception">errors/error</prop><prop key="java.lang.Throwable">errors/err</prop></props></property><property name="statusCodes"><props><prop key="errors/error">500</prop><prop key="errors/404">404</prop></props></property><!-- 设置日志输出级别,不定义则默认不输出警告等错误日志信息 --><property name="warnLogCategory" value="WARN"></property><!-- 默认错误页面,当找不到上面mappings中指定的异常对应视图时,使用本默认配置 --><property name="defaultErrorView" value="errors/error"></property><!-- 默认HTTP状态码 --><property name="defaultStatusCode" value="500"></property></bean><!-- 全局异常配置 end -->

但现在spring3.0注解很方便强大,所以更多的开发者都倾向于用注解来代替原来繁琐的配置,而对于异常也有相应的注解,我个人并不觉得在配置文件中配置全局异常很麻烦,如果整个项目都用了注解,而你再用配置就显得不伦不类,所以就用一个简单的方法来代替。写一个公共的controller,用@ExceptionHandler来拦截异常,然后此controller被其他controller继承,这样就用很少的代码解决异常拦截的问题,公共controller代码如下:
@Controllerpublic class ExceptionHandlerController {@ExceptionHandler(RuntimeException.class)public String operateExp(RuntimeException ex,HttpServletRequest request){System.out.println("this is for test");//mod.addAttribute("err", ex.getMessage()); //ExceptionHandler处理异常时,Model,是不能用的,否则会不起作用,这里用了HttpServletRequestrequest.setAttribute("err", ex.getMessage());return "public/error";}}

0 0
原创粉丝点击