springmvc统一的异常处理方法
2013-05-13 11:59
447 查看
小编初接触springmvc,终结了一些皮毛东西,跟大家一同分享一下。如有不足之处,请多多评论,指教...
我近次在做项目的过程中遇到了springmvc的异常...话说try-catch--解决很容易,事实这的确很方便,或者在web.xml中配置一些404、500、503...什么的异常错误,这也是需要的。但是呢,有时候,不同的功能呢的抛出了相同的异常,而此时我们却需要相同的页面的异常错误页面,这时候全局异常就是一个好东东了。
我目前所了解的有两种方法配置全局异常,一种是在spring-mvc.xml文件下配置,一种用一个异常的类来配置。
第一种:使用xml配置来配置,通过Spring mvc框架提供的SimpleMappingExceptionResolver来集中处理,该类可以捕获所有控制器抛出的异常,并将它映射到配置的视图中例子如下:
第二种:直接实现自己的HandlerExceptionResolver
代码如下:
然后需要在spring-mvc.xml中配置自己定义的异常:
代码如下:
以上就是springmvc中全局异常的两种处理方法。
有时候,我们需要在一个类中处理自己当前类的某种异常,但是又要统一处理,这种情况要怎么做了。。。
哈,我找度娘找一下,找到了解决方案...
这种方法使用@ExceptionHandler进行处理
例子如下:
使用这种异常,需要在你执行的某个方法前抛出,然后在此方法进行异常处理,最后返回视图之类的。。。
我近次在做项目的过程中遇到了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"; }
使用这种异常,需要在你执行的某个方法前抛出,然后在此方法进行异常处理,最后返回视图之类的。。。
相关文章推荐
- springmvc 统一处理异常机制
- Spring MVC的异常统一处理方法
- SpringMVC之异常统一处理
- SpringMVC的统一异常处理机制
- 【SpringMVC学习07】SpringMVC中的统一异常处理
- springMVC系列(三)——异常统一处理
- 封装ajax方法(统一处理登录超时异常)
- 我在项目中Springmvc处理异常并记录日志(一) ps:如何有更好的方法,请写到评论中多多交流,谢谢!
- SpringMVC中的统一异常处理
- springmvc 统一异常处理
- springmvc异常统一处理
- SpringMVC统一异常处理
- Spring boot异常统一处理方法:@ControllerAdvice注解的使用、全局异常捕获、自定义异常捕获
- springmvc 统一异常处理
- springmvc统一处理ajax异常
- SpringMVC 统一异常处理入口
- 扩展jQuery的方法统一处理AJAX调用过程中产生的异常错误信息
- springmvc 统一处理异常
- 关于合理使用SpringMVC统一异常处理机制以改善代码风格的一些思考
- 在SpringMVC中,当Json序列化,反序列化失败的时候,会抛出HttpMessageNotReadableException异常, 当Bean validation失败的时候,会抛出MethodArgumentNotValidException异常,因此,只需要在ExceptionHandler类中添加处理对应异常的方法即可。