springMVC --全局异常处理(两种方式)
来源:互联网 发布:零境网络 官网 编辑:程序博客网 时间:2024/06/03 18:13
首先看springMVC的配置文件:
<!-- 全局异常配置 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 -->
这里主要的类是SimpleMappingExceptionResolver类,和他的父类AbstractHandlerExceptionResolver类。
可以看到源码中和上述配置对应的属性;
另外要注意的是日志
<span style="font-size:14px;"><property name="warnLogCategory" value="WARN"></property></span>
级别设置为WARN:
也可以实现HandlerExceptionResolver接口或者继承SimpleMappingExceptionResolver,写一个自己的异常处理程序
public class SpringMVCSimpleMappingExceptionResolver extends SimpleMappingExceptionResolver {public static final Log log = LogFactory.getLog(SpringMVCSimpleMappingExceptionResolver.class);@Overrideprotected ModelAndView doResolveException(HttpServletRequest request,HttpServletResponse response, Object handler, Exception ex) {ModelAndView mv = null;String accept = request.getHeader("accept"); if (accept != null && !(accept.indexOf("application/json") > -1 || (request.getHeader("X-Requested-With") != null && request.getHeader("X-Requested-With").indexOf("XMLHttpRequest") > -1))) { mv = super.doResolveException(request, response, handler, ex); } else { try { // json 请求返回 PrintWriter writer = response.getWriter(); writer.write(Return.failure((ex.getMessage()))); writer.flush(); } catch (IOException e) { if (log.isInfoEnabled()) { log.info(StringUtil.getTrace(e)); } } } doLog((HandlerMethod) handler, ex); return mv;}/** * 记录异常日志 * * @param handler * @param excetpion */private void doLog(HandlerMethod handler, Exception excetpion) { if (log.isEnabledExceptionDb()) { // 异常信息日志入库 }}}
3 2
- springMVC --全局异常处理(两种方式)
- springMVC --全局异常处理(两种方式)
- springMVC 全局异常处理
- springMVC全局异常处理
- SpringMVC全局异常处理
- springmvc全局异常处理
- springmvc全局异常处理
- springmvc全局异常处理
- springmvc全局异常处理
- SpringMVC 全局异常处理
- springmvc全局异常处理
- SpringMVC 全局异常处理
- springMVC全局异常处理
- springmvc三种全局异常处理
- springMVC全局的异常处理
- springMVC实现全局异常处理
- SpringMVC 全局异常处理代码
- Springmvc的全局异常处理
- CodeForces - 448D—Multiplication Table--二分法(nlogn)
- 赢了!北京获2022年冬奥会举办权
- HDU 4405 飞行棋求到终点时掷筛子的期望--期望dp
- HDU - 4396 More lumber is required (BFS 最短路)
- 【黑马程序员】C语言之函数
- springMVC --全局异常处理(两种方式)
- C语言的图形函数笔记
- nyoj47 过河问题
- mysql异常Packet for query is too large(mysql写入数据过大)
- ACM ? ACM !
- 排序算法进阶(一)——快速排序算法
- 广度搜索的应用实例
- Packet for query is too large
- slf4j 简介