如何能够对全局的异常信息进行捕获处理呢,最快捷有效的做法是使用SimpleMappingExceptionResolver来对全局异常信息进行捕获,具体实现方法如下:
在springmvc中做如下配置,
注入SimpleMappingExceptionResolver类,并设定异常映射关系exceptionMappings以及状态码statusCodes,
- 注入SimpleMappingExceptionResolver类
- 设定异常映射关系exceptionMappings
- 设定状态码状态码statusCodes
- 设定日志级别
- 设定错误输出页面
<!--全局错误输出 -->
<bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="exceptionMappings">
<props>
<prop key="java.lang.Exception">errors/500</prop>
<prop key="java.lang.Throwable">errors/500</prop>
</props>
</property>
<property name="statusCodes">
<props>
<prop key="errors/500">500</prop>
</props>
</property>
<!-- 设置日志输出级别,不定义则默认不输出警告等错误日志信息 -->
<property name="warnLogCategory" value="WARN"></property>
<!-- 默认错误页面,当找不到上面mappings中指定的异常对应视图时,使用本默认配置 -->
<property name="defaultErrorView" value="errors/500"></property>
<!-- 默认HTTP状态码 -->
<property name="defaultStatusCode" value="500"></property>
</bean>
添加500异常显示页面
<h3>哎呦,系统失联了...</h3>
<div id="exception" style="display: none">
<%
Exception ex = (Exception) request.getAttribute("exception");
%>
<H2>
Exception:
<%=ex.getMessage()%></H2>
<P />
<%
ex.printStackTrace(new java.io.PrintWriter(out));
%>
搞定以上,你的全局异常信息捕获就ok了