时间:2021-05-19
一、需求
二、统一异常处理解决方案
2.1 定义异常
针对预期可能发生的异常,定义很多异常类型,这些异常类型通常继承于Exception。
这里定义一个系统自定义异常类:
CustomException,用于测试。
2.2 异常处理
要在一个统一异常处理的类中要处理系统抛出的所有异常,根据异常类型来处理。
统一异常处理的类是什么?
前端控制器DispatcherServlet在进行HandlerMapping、调用HandlerAdapter执行Handler过程中,如果遇到异常,进行异常处理。
在系统中自定义统一的异常处理器,写系统自己的异常处理代码。
统一异常处理器实现HandlerExceptionResolver接口。
public class CustomExceptionResolver implements HandlerExceptionResolver { //前端控制器DispatcherServlet在进行HandlerMapping、调用HandlerAdapter执行Handler过程中,如果遇到异常就会执行此方法 //handler最终要执行的Handler,它的真实身份是HandlerMethod //Exception ex就是接收到异常信息 @Override public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) { //输出异常 ex.printStackTrace(); //统一异常处理代码 //针对系统自定义的CustomException异常,就可以直接从异常类中获取异常信息,将异常处理在错误页面展示 //异常信息 String message = null; CustomException customException = null; //如果ex是系统 自定义的异常,直接取出异常信息 if(ex instanceof CustomException){ customException = (CustomException)ex; }else{ //针对非CustomException异常,对这类重新构造成一个CustomException,异常信息为“未知错误” customException = new CustomException("未知错误"); } //错误 信息 message = customException.getMessage(); request.setAttribute("message", message); try { //转向到错误 页面 request.getRequestDispatcher("/WEB-INF/jsp/error.jsp").forward(request, response); } catch (ServletException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return new ModelAndView(); }}2.3 配置统一异常处理器
2.4 异常处理逻辑
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
前言之前一篇文章介绍了基本的统一异常处理思路:SpringMVC/Boot统一异常处理最佳实践.上篇文章也有许多人提出了一些问题:如何区分Ajax请求和普通页面
springboot中抛出异常,springboot自带的是springmvc框架,这个就不多说了。springmvc统一异常解决方法这里要说明的是。只是结合了
这篇文章主要介绍了SpringMVC-统一异常处理三种方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
本文首先将会回顾Spring5之前的SpringMVC异常处理机制,然后主要讲解SpringBoot2Webflux的全局异常处理机制。SpringMVC的异常
使用springmvc提供restful风格的接口,实现前后端分离,后端只提供数据接口,而不做页面渲染。因此可对接口做统一处理:请求参数校验响应数据格式全局异常