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; } } 请问下为什么当系统产生异常之后,为什么根本都没执行到上面的方法里面来呢? 其实我想实现的就是,比如说链接不上数据库了,我就讲用户导航到错误页面,并提示数据库链接失败。 不通的异常导航到不同的页面。谢谢。 |
|
你xml内容是写在哪里的,貌似只能配置到spring mvc的配置文件里。
|
|
只有解析器,没有配处理器吧?Handler
|
|
你没有抛出异常把,抛出那里接收都没有写
|
|
10分 |
http://blog.csdn.net/lwphk/article/details/39500569
这个文章,看看就知道。 |
跟这个配置到哪里是没关系的。 |
|
比如我项目启动的时候, 这时候我数据库是关闭的, |
|
我就是这样高的啊,(3)实现Spring的异常处理接口HandlerExceptionResolver 自定义自己的异常处理器; 但是就是那个方法进不去。 |
|
10分 |
MyExceptionCustom你的这个要注入到spring容器里面 @Component 或者在文件里面配置
|
10分 |
@Component 这个已经注入了 也还是一样的效果。。 |
20分 |
首先我试了你的那个,我这里完全可以进入方法,可能是你其他哪里的问题了。你的那个配置希望是配置在spring mvc的那个serlvet那个下面扫描的。 其次 ①你可以把你配置文件里面处理异常的配置删除了,直接使用MyExceptionCustom?实现HandlerExceptionResolver ,这个方式会优先的处理错误,如果在这里面跳转页面,配置文件里面的错误配置压根不会起作用
②你那里modelAndView.setViewName(“xx”) 意味着你已经在跳转页面了,你再用write输出毫无意义。 ③:你可以直接在controller里面跑一个异常,然后访问他一步步调试,或许你的程序压根没有错误 |
把我上面的那段xml的配置全删掉?我明天试试。谢谢。 |
|
50分 |
怎么样了? |
可以 没问题,谢谢。 |