当前位置: 代码迷 >> J2EE >> 请教关于SpringMVC的自定义错误的有关问题
  详细解决方案

请教关于SpringMVC的自定义错误的有关问题

热度:72   发布时间:2016-04-17 23:39:41.0
请问关于SpringMVC的自定义异常的问题。
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 或者在文件里面配置
------解决思路----------------------
引用:
MyExceptionCustom你的这个要注入到spring容器里面  @Component 或者在文件里面配置



@Component  

这个已经注入了 也还是一样的效果。。
------解决思路----------------------
首先我试了你的那个,我这里完全可以进入方法,可能是你其他哪里的问题了。你的那个配置希望是配置在spring mvc的那个serlvet那个下面扫描的。 其次 ①你可以把你配置文件里面处理异常的配置删除了,直接使用MyExceptionCustom?实现HandlerExceptionResolver ,这个方式会优先的处理错误,如果在这里面跳转页面,配置文件里面的错误配置压根不会起作用
  相关解决方案