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

举报
愚公搬代码 发表于 2023/06/30 23:11:43 2023/06/30
【摘要】 一、异常处理异常处理是程序中遇到错误或异常情况时的一种处理机制,是保证程序稳定性和可靠性的关键技术。程序员可以在代码中预先设定一些异常处理机制,当程序运行时出现了这些异常情况,就会自动调用相应的异常处理程序来处理异常。常见的异常类型有空指针异常、数组越界异常、算术异常等。1.异常处理器 HandlerExceptionResolver接口(异常处理器) @Componentpublic cl...

一、异常处理

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

1.异常处理器

HandlerExceptionResolver接口(异常处理器)

@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;
}
}

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

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

– 类型: 类注解

– 位置:异常处理器类上方

– 作用:设置当前类为异常处理器类

– 范例:

@Component
@ControllerAdvice
public class ExceptionAdvice {
}

• 使用注解实现异常分类管理

– 名称: @ExceptionHandler

– 类型: 方法注解

– 位置:异常处理器类中针对指定异常进行处理的方法上方

– 作用:设置指定异常的处理方式

– 范例:

– 说明:处理器方法可以设定多个

@ExceptionHandler(Exception.class)
@ResponseBody
public String doOtherException(Exception ex){
return "出错啦,请联系管理员! ";
}

3.异常处理解决方案

• 异常处理方案

– 业务异常:

• 发送对应消息传递给用户,提醒规范操作

– 系统异常:

• 发送固定消息传递给用户,安抚用户

• 发送特定消息给运维人员,提醒维护

• 记录日志

– 其他异常:

• 发送固定消息传递给用户,安抚用户

• 发送特定消息给编程人员,提醒维护

• 纳入预期范围内

• 记录日志

4.自定义异常

• 异常定义格式

//自定义异常继承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);
}
}

• 异常触发方式

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

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

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。