博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring MVC的异常统一处理方法
阅读量:5291 次
发布时间:2019-06-14

本文共 2084 字,大约阅读时间需要 6 分钟。

        我们经常需要统一配置项目的异常处理,又希望统一处理异常代码,同时不侵入原有的正常代码。我们可以通过以下三种方式实现统一处理项目的自定义异常。

      通过SimpleMappingExceptionResolver类实现自定义异常的统一处理

        通过实现比较简单,只需要进行bean配置即可

 

   
   
   
   
    
        
            
login
errorPage
 

        这种方式简单并且具有良好的扩展性,对现有代码没有侵入性,但是除了异常信息外,无法接收其他的额外的参数信息。

       特别说明:errorPage.jsp和login.jsp的存放目录必须在/WEB-INF/exception目录中。模型视图路径必须与异常提示文件的存放路径保持一致。

 

      通过 实现HandlerExceptionResolver接口实现自定义异常的统一处理

  • 首先配置bean,支持模型视图的解析

 

 

 

  • 实现HandlerExceptionResolver接口

 

public class ProjectExceptionHandler implements HandlerExceptionResolver {    public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {        /*定义model传输model到页面*/        Map
model = new HashMap
(); model.put("ex", ex); return new ModelAndView("error", model); }}

 

 

              ex为我们自定义的异常处理类,我们自定义一个ProjectException类

 

 

public class ProjectException extends RuntimeException {    /** serialVersionUID */    private static final long serialVersionUID = 2332608236621015980L;               public ProjectException () {        super();    }    public ProjectException (String message) {        super(message);    }}

              当我们在代码异常地方抛出异常时系统自动讲异常显示到自定义的异常页面

 

 

throw new ProjectException("自定义异常页面");

              采用这种方式不仅具有SimpleMappingExceptionResolver所有的有点,同时还可以额外传递参数。

 

       通过Spring的@ExceptionHandler注解实现异常统一处理

          看下面一个使用@ExceptionHandler 实现一个异常处理类

 

public class ExceptionController {    /** 基于@ExceptionHandler异常处理 */    @ExceptionHandler    public String exp(HttpServletRequest request, Exception ex) {	        /*要输出的异常参数*/        request.setAttribute("ex", ex);        return "error";    }}

 

 

          使用@ExceptionHandler 实现异常统一处理的方式简单,可扩展性强,只需要实现一个类似控制器的类,就可以了,不需要额外spring配置,但是这种方式有一个缺点是必须讲该类放在抛出异常的类同一个目录下,否则无法起作用,不够灵活,同时对于其他具有倾入性,对可能出现异常的地方需要继承该类(ExceptionController )。

       异常提示的jsp文件路径

      定义异常jsp文件的路径,如果要放在web-inf外面

../../exception/error-interface

 

转载于:https://www.cnblogs.com/wala-wo/p/5119175.html

你可能感兴趣的文章
【数据结构】栈结构操作示例
查看>>
中建项目环境迁移说明
查看>>
[转帖] Oracle 关闭自动收集统计信息
查看>>
三.野指针和free
查看>>
VIO的Bundle Adjustment推导
查看>>
activemq5.14+zookeeper3.4.9实现高可用
查看>>
asp.net FileUpload控件文件格式的判断及文件大小限制
查看>>
angular(1.5.8)
查看>>
h5的video标签支持的视频格式
查看>>
大数据没那么重要
查看>>
TCP/IP详解学习笔记(3)IP协议ARP协议和RARP协议
查看>>
简单【用户输入验证】
查看>>
学android:直接用jdk来helloworld
查看>>
Access Jira RESTful API by cURL
查看>>
python tkinter GUI绘制,以及点击更新显示图片
查看>>
Spark基础脚本入门实践3:Pair RDD开发
查看>>
HDU4405--Aeroplane chess(概率dp)
查看>>
RIA Test:try catch 对 Error #1009 (无法访问空对象引用的属性或方法)的处理
查看>>
python使用easyinstall安装xlrd、xlwt、pandas等功能模块的方法
查看>>
一个杯子的测试用例
查看>>