Spring的配置文件如下:
<!-- 全局异常配置 start 控制器异常处理 com.example.myexception.MyExceptionCustom-->
<bean id="exceptionResolver" class="com.example.myexception.MyExceptionCustom">
<property name="exceptionMappings">
<props>
<prop key="java.lang.Exception">500</prop>
<prop key="java.lang.Throwable">500</prop>
<prop key="java.sql.SQLException">sqlError</prop>
<prop key="java.net.ConnectException">showDBError</prop>
<!-- 遇到MaxUploadSizeExceededException异常时,自动跳转到/WEB-INF/jsp/error_fileupload.jsp页面 -->
<prop key="org.springframework.web.multipart.MaxUploadSizeExceededException">error</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="info"></property>
<property name="defaultErrorView" value="500"></property>
<property name="defaultStatusCode" value="500"></property>
</bean>
<!-- 全局异常配置 end -->
异常类如下:
public class MyExceptionCustom extends SimpleMappingExceptionResolver implements
HandlerExceptionResolver {
private Logger log = Logger.getLogger(InitListener.class);
@Override
public ModelAndView resolveException(HttpServletRequest request,
HttpServletResponse response, Object arg2, Exception exception) {
ModelAndView modelAndView = new ModelAndView();
if (exception instanceof IOException) {
System.out.println(1);
} else
if (exception instanceof SQLException) {
System.out.println(2);
log.error("Fail to initial connect mysql Database.22 " );
} else if (exception instanceof ConnectException) {
modelAndView.addObject("msg", "连接失败!");
modelAndView.setViewName("showDBError");
log.error("Fail to initial connect mysql Database.33 " );
} else if (exception instanceof JDBCConnectionException) {
modelAndView.addObject("msg", "连接失败!");
modelAndView.setViewName("showDBError");
log.error("Fail to initial connect mysql Database.44 " );
}
PrintWriter writer;
try {
writer = response.getWriter();
writer.write("ajax error info");
writer.flush();
} catch (IOException e) {
e.printStackTrace();
}
return modelAndView;
}
}
请问下为什么当系统产生异常之后,为什么根本都没执行到上面的方法里面来呢?
谢谢。
其实我想实现的就是,比如说链接不上数据库了,我就讲用户导航到错误页面,并提示数据库链接失败。
不通的异常导航到不同的页面。谢谢。
------解决思路----------------------
http://blog.csdn.net/lwphk/article/details/39500569
这个文章,看看就知道。
------解决思路----------------------
MyExceptionCustom你的这个要注入到spring容器里面 @Component 或者在文件里面配置
------解决思路----------------------
@Component
这个已经注入了 也还是一样的效果。。
------解决思路----------------------
首先我试了你的那个,我这里完全可以进入方法,可能是你其他哪里的问题了。你的那个配置希望是配置在spring mvc的那个serlvet那个下面扫描的。 其次 ①你可以把你配置文件里面处理异常的配置删除了,直接使用MyExceptionCustom?实现HandlerExceptionResolver ,这个方式会优先的处理错误,如果在这里面跳转页面,配置文件里面的错误配置压根不会起作用