您的位置:首页 > 编程语言 > Java开发

springmvc统一的异常处理方法

2013-05-13 11:59 447 查看
  小编初接触springmvc,终结了一些皮毛东西,跟大家一同分享一下。如有不足之处,请多多评论,指教...

  

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

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

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

      

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


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

  代码如下:

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;

public class ExceptionHandler implements HandlerExceptionResolver {

@Override
public ModelAndView resolveException(HttpServletRequest request,
HttpServletResponse response, Object handler, Exception ex) {
if(ex instanceof org.springframework.web.multipart.MaxUploadSizeExceededException){
//这里就是跳转的视图
return new ModelAndView("upLoad");
  }
  if(ex instanceof java.io.FileNotFoundException){

return new ModelAndView("exception");
   }

}

}


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

  代码如下:

    

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


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

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

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

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

  例子如下:

    

@ExceptionHandler(Exception.class)
public @ResponseBody String handleException(Exception ex,HttpServletRequest request,HttpSession session) {
if(ex instanceof org.springframework.web.multipart.MaxUploadSizeExceededException){
request.setAttribute("error", "文件超过长度");
return "{'msg':'您上上传的文件过大,上传文件最大不能超过5兆'}";
}
if(ex instanceof java.io.FileNotFoundException){

return "您下载的文件不存在,请定期维护服务器!";
}
//这是错误页面
return "error";
}


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

    

  

    
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: