zoukankan      html  css  js  c++  java
  • springmvc统一的异常处理方法

      小编初接触springmvc,终结了一些皮毛东西,跟大家一同分享一下。如有不足之处,请多多评论,指教...

      

      我近次在做项目的过程中遇到了springmvc的异常...话说try-catch--解决很容易,事实这的确很方便,或者在web.xml中配置一些404、500、503...什么的异常错误,这也是需要的。但是呢,有时候,不同的功能呢的抛出了相同的异常,而此时我们却需要相同的页面的异常错误页面,这时候全局异常就是一个好东东了。

      我目前所了解的有两种方法配置全局异常,一种是在spring-mvc.xml文件下配置,一种用一个异常的类来配置。

      第一种:使用xml配置来配置,通过Spring mvc框架提供的SimpleMappingExceptionResolver来集中处理,该类可以捕获所有控制器抛出的异常,并将它映射到配置的视图中例子如下:

          

     1 <bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
     3 <property name="defaultErrorView">
     4 <value>failure</value>
     5 </property>
     6 <property name="exceptionMappings">
     7 <props>
     8 <!--key表示你要抛出的异常情况,value代表异常视图-->
     9 <prop key="java.sql.SQLException">showDBError</prop>
    10 <prop key="java.lang.RuntimeException">showError</prop>
    11 </props>
    12 </property>
    13 </bean>

      第二种:直接实现自己的HandlerExceptionResolver

      代码如下:

     1     import javax.servlet.http.HttpServletRequest;   
     2     import javax.servlet.http.HttpServletResponse;   
     3       
     4     import org.springframework.web.servlet.HandlerExceptionResolver;   
     5     import org.springframework.web.servlet.ModelAndView;   
     6       
     7     public class ExceptionHandler implements HandlerExceptionResolver {   
     8       
     9         @Override  
    10         public ModelAndView resolveException(HttpServletRequest request,   
    11                 HttpServletResponse response, Object handler, Exception ex) {   
    12            if(ex instanceof org.springframework.web.multipart.MaxUploadSizeExceededException){  
    13             //这里就是跳转的视图
    14             return new ModelAndView("upLoad");
    15           }  
    16           if(ex instanceof java.io.FileNotFoundException){
    17             
    18             return new ModelAndView("exception");   
    19           } 
    20            
    21         }   
    22       
    23     }  

      然后需要在spring-mvc.xml中配置自己定义的异常:

      代码如下:

        

    1     <bean id="exceptionResolver" class="com.tiantian.xxx.web.handler.ExceptionHandler"/>  

    以上就是springmvc中全局异常的两种处理方法。

      有时候,我们需要在一个类中处理自己当前类的某种异常,但是又要统一处理,这种情况要怎么做了。。。

      哈,我找度娘找一下,找到了解决方案...

      这种方法使用@ExceptionHandler进行处理

      例子如下:

        

     1 @ExceptionHandler(Exception.class)       
     2     public @ResponseBody String handleException(Exception ex,HttpServletRequest request,HttpSession session) {
     3         if(ex instanceof org.springframework.web.multipart.MaxUploadSizeExceededException){  
     4             request.setAttribute("error", "文件超过长度");  
     5             return "{'msg':'您上上传的文件过大,上传文件最大不能超过5兆'}";
     6         }  
     7         if(ex instanceof java.io.FileNotFoundException){
     8             
     9             return "您下载的文件不存在,请定期维护服务器!";
    10         } 
    11         //这是错误页面
    12         return "error";
    13     } 

    使用这种异常,需要在你执行的某个方法前抛出,然后在此方法进行异常处理,最后返回视图之类的。。。

        

      

        

  • 相关阅读:
    第六周总结
    石家庄地铁线路查询系统
    第五周总结报告
    二维数组
    第四周总结
    个人作业一(补充)
    第三周总结
    个人作业一
    开课博客
    CentOS7 网卡配置文件解释
  • 原文地址:https://www.cnblogs.com/huzi007/p/3075395.html
Copyright © 2011-2022 走看看