前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【愚公系列】2023年04月 Java教学课程 141-Spring MVC框架的异常处理

【愚公系列】2023年04月 Java教学课程 141-Spring MVC框架的异常处理

作者头像
愚公搬代码
发布2023-04-21 19:20:48
1780
发布2023-04-21 19:20:48
举报
文章被收录于专栏:历史专栏历史专栏


一、异常处理

异常处理是程序中遇到错误或异常情况时的一种处理机制,是保证程序稳定性和可靠性的关键技术。程序员可以在代码中预先设定一些异常处理机制,当程序运行时出现了这些异常情况,就会自动调用相应的异常处理程序来处理异常。常见的异常类型有空指针异常、数组越界异常、算术异常等。

1.异常处理器

HandlerExceptionResolver接口(异常处理器)

代码语言:javascript
复制
@Component
public class ExceptionResolver implements HandlerExceptionResolver {
    public ModelAndView resolveException(HttpServletRequest request,
                                         HttpServletResponse response,
                                         Object handler,
                                         Exception ex) {
        System.out.println("异常处理器正在执行中");
        ModelAndView modelAndView = new ModelAndView();
        //定义异常现象出现后,反馈给用户查看的信息
        modelAndView.addObject("msg","出错啦! ");
        //定义异常现象出现后,反馈给用户查看的页面
        modelAndView.setViewName("error.jsp");
        return modelAndView;
    }
}

根据异常的种类不同,进行分门别类的管理,返回不同的信息

代码语言:javascript
复制
public class ExceptionResolver implements HandlerExceptionResolver {
    @Override
    public ModelAndView resolveException(HttpServletRequest request,
                                         HttpServletResponse response,
                                         Object handler,
                                         Exception ex) {
        System.out.println("my exception is running ...."+ex);
        ModelAndView modelAndView = new ModelAndView();
        if( ex instanceof NullPointerException){
            modelAndView.addObject("msg","空指针异常");
        }else if ( ex instanceof  ArithmeticException){
            modelAndView.addObject("msg","算数运算异常");
        }else{
            modelAndView.addObject("msg","未知的异常");
        }
        modelAndView.setViewName("error.jsp");
        return modelAndView;
    }
}

2.注解开发异常处理器

  • 使用注解实现异常分类管理
    • 名称: @ControllerAdvice
    • 类型: 类注解
    • 位置:异常处理器类上方
    • 作用:设置当前类为异常处理器类
    • 范例:
代码语言:javascript
复制
@Component
@ControllerAdvice
public class ExceptionAdvice {
}  
  • 使用注解实现异常分类管理
    • 名称: @ExceptionHandler
    • 类型: 方法注解
    • 位置:异常处理器类中针对指定异常进行处理的方法上方
    • 作用:设置指定异常的处理方式
    • 范例:
    • 说明:处理器方法可以设定多个
代码语言:javascript
复制
@ExceptionHandler(Exception.class)
@ResponseBody
public String doOtherException(Exception ex){
   return "出错啦,请联系管理员! ";
}  

3.异常处理解决方案

  • 异常处理方案
    • 业务异常:
      • 发送对应消息传递给用户,提醒规范操作
    • 系统异常:
      • 发送固定消息传递给用户,安抚用户
      • 发送特定消息给运维人员,提醒维护
      • 记录日志
    • 其他异常:
      • 发送固定消息传递给用户,安抚用户
      • 发送特定消息给编程人员,提醒维护
      • 纳入预期范围内
      • 记录日志

4.自定义异常

异常定义格式

代码语言:javascript
复制
//自定义异常继承RuntimeException,覆盖父类所有的构造方法
public class BusinessException extends RuntimeException {
    public BusinessException() {
    }

    public BusinessException(String message) {
        super(message);
    }

    public BusinessException(String message, Throwable cause) {
        super(message, cause);
    }

    public BusinessException(Throwable cause) {
        super(cause);
    }

    public BusinessException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
        super(message, cause, enableSuppression, writableStackTrace);
    }
}

异常触发方式

代码语言:javascript
复制
if(user.getName().trim().length()<4) {
    throw new BusinessException("用户名长度必须在2-4位之间,请重新输入! ");
}

通过自定义异常将所有的异常现象进行分类管理,以统一的格式对外呈现异常消息

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-04-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、异常处理
    • 1.异常处理器
      • 2.注解开发异常处理器
        • 3.异常处理解决方案
          • 4.自定义异常
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档