spring-Exception
2022/7/21 6:25:53
本文主要是介绍spring-Exception,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
异常处理
-
出现异常现象的常见位置与常见诱因如下:
-
框架内部抛出异常:因使用不和规则导致
-
数据层抛出异常:因外部服务器故障导致(例如:服务器访问超时)
-
业务层抛出异常:因业务逻辑书写错误导致(遍历业务书写操作,导致索引异常等)
-
表现层抛出异常:因数据收集,校验等股则导致(不匹配的数据类型间导致异常)
-
工具类抛出异常:因工具类书写不够严谨不够健壮导致(必要释放的连接长期未释放)
-
-
各个层均抛出异常,异常处理代码书写在哪一层?
-
所有的异常均抛出到表现层进行统一处理。
-
-
表现层处理异常,每个方法中单独书写,代码书写量巨大且意义不强,如何解决——AOP思想
项目异常处理方案
-
项目异常分类
-
业务异常(BusinessException)
1. 规范的用户行为产生的异常
-
不规范的用户行为操作产生的异常
-
*发送对应的消息传递给用户,提醒规范操作
-
-
系统异常(SystemException)
-
项目运行过程中可预计且无法避免的异常
-
*发送固定的消息传递给用户,安抚用户
*发送特定消息给运维人员,提醒维护
*记录日志
-
-
其它异常(Exception)
-
编程人未预期到的异常
-
**发送固定的消息传递给用户,安抚用户
*发送特定消息给编程人员,提醒维护(纳入预期范围)
*记录日志
-
-
Exception
-
SystemException
package com.yang.exception; public class SystemException extends RuntimeException{ private Integer code; public SystemException(Integer code, String message, Throwable cause) { super(message, cause); this.code = code; } public SystemException(Integer code, String message) { super(message); this.code = code; } public Integer getCode() { return code; } public void setCode(Integer code) { this.code = code; } }
-
BusinessException
package com.yang.exception; public class BusinessException extends RuntimeException{ private Integer code; public BusinessException(Integer code, String message, Throwable cause) { super(message, cause); this.code = code; } public BusinessException(Integer code, String message) { super(message); this.code = code; } public Integer getCode() { return code; } public void setCode(Integer code) { this.code = code; } }
-
service【造的异常】
@Override public Book select(Integer id) { //模拟自定义异常 if (id == 1) { throw new BusinessException(Code.PROJECT_BUSINESS_ERROR,"请勿进行非法操作!!"); } try{ id= 1/0; }catch (SystemException ex){ throw new SystemException(Code.SYSTEM_TIMEOUT_ERROR,"系统繁忙,请稍后重试!!"); } return bookDao.select(id); }
-
Controller :ProjectExceptionAdvice
package com.yang.controller; import com.yang.exception.BusinessException; import com.yang.exception.SystemException; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RestControllerAdvice; @RestControllerAdvice public class ProjectExceptionAdvice { @ExceptionHandler(BusinessException.class) public Result doBusinessException(BusinessException be ){ //发送对应的消息给用户 return new Result(null,be.getCode(),be.getMessage()); } @ExceptionHandler(SystemException.class) public Result doSystemException(SystemException se ){ //发送特定消息给用户 //发送特定消息给运维人员,提醒维护 //记录日志 return new Result(null,se.getCode(),se.getMessage()); } @ExceptionHandler(Exception.class) public Result doException(Exception ex ){ //发送特定消息给用户 //发送特定消息给编程人员,提醒维护 //记录日志 return new Result(null,Code.SYSTEM_UNKNOWN_ERROR,"系统繁忙,请联系管理员"); } }
-
Code
package com.yang.controller; public class Code { public static final Integer SYSTEM_UNKNOWN_ERROR = 50001; public static final Integer SYSTEM_TIMEOUT_ERROR = 50002; public static final Integer PROJECT_VALIDATE_ERROR = 60001; public static final Integer PROJECT_BUSINESS_ERROR = 60002; }
这篇关于spring-Exception的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-25JAVA语音识别项目项目实战入门教程
- 2024-11-25JAVA云原生项目实战入门教程
- 2024-11-25Java语音识别项目入门:新手必读指南
- 2024-11-25Java语音识别项目入门:轻松开始你的第一个语音识别项目
- 2024-11-25Java语音识别项目入门详解
- 2024-11-25Java语音识别项目教程:从零开始的详细指南
- 2024-11-25JAVA语音识别项目教程:初学者指南
- 2024-11-25Java语音识别项目教程:初学者指南
- 2024-11-25JAVA云原生入门:新手指南与基础教程
- 2024-11-25Java云原生入门:从零开始的全面指南