springmvc异常处理

2022-03-23 17:14:42 浏览数 (1)

SpringMVC 中的异常处理

系统中异常包括两类:预期异常和运行时异常 RuntimeException,前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发、测试通过手段减少运行时异常的发生。 系统的 dao、service、controller 出现都通过 throws Exception 向上抛出,最后由 springmvc 前端控制器交由异常处理器进行异常处理 1 编写异常类和错误页面

代码语言:javascript复制
/**
 * 自定义异常类
 * 这是一个新建的类
 */
public class SysException extends Exception{
    //存储提示信息
    public String message;

    public SysException(String message) {
        this.message = message;
    }

    @Override
    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }
}
代码语言:javascript复制
<body>
执行失败!
${ errorMsg}
</body>

编写控制层模拟抛出异常

代码语言:javascript复制
@Controller
@RequestMapping("/user")
public class UserController {
    @RequestMapping("/testException")
    public String testException() throws SysException{
        System.out.println("testException执行了。");

        try {
            //模拟异常
            int i=1/0;
        } catch (Exception e) {
            //打印异常信息
            e.printStackTrace();
            //向上抛出自定义异常信息
            throw new SysException("查询所有用户出现了错误。。");
        }

        return "success";
    }
}

请求页面

代码语言:javascript复制
<body>
        <h3>异常处理</h3>
        <a href="user/testException" >异常处理</a>
</body>

自定义异常处理器

代码语言:javascript复制
/**
 * 异常处理器
 * 这是一个新建的类
 */
public class SysExceptionResolver implements HandlerExceptionResolver {
    /**
     * 处理异常的业务逻辑
     * @param httpServletRequest
     * @param httpServletResponse
     * @param o
     * @param
     * @return
     */
    @Override
    public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception ex) {
        //获取到异常对象
        SysException e=null;
        //如果异常是sysexception类型的
        if (ex instanceof SysException){
            e=(SysException) ex;
        }else{
            e=new SysException("系统正在维护");
        }
        //创建model and view 对象
        ModelAndView mv=new ModelAndView();
        mv.addObject("errorMsg",e.getMessage());
        //跳转到哪个页面
        mv.setViewName("error");
        return mv;
    }
}

在springmvc中配置异常处理器

代码语言:javascript复制
  <!--配置异常处理器-->
    <bean id="sysExceptionResolver" class="com.rpf.exception.SysExceptionResolver"></bean>

0 人点赞