§ 本文目标
掌握业务异常开发、配置,以及应用场景
§ 练习场景
配置异常代码,并在业务逻辑层抛出业务异常
前提:
- 基于3.2.1章节创建的工程
- 微服务应用:yusp-app-common、yusp-app-oca
§ 操作手册
封装基本的业务异常,包括信息码、提示内容等
YuspException
§ 配置
§ POM配置
<dependency>
<groupId>cn.com.yusys.yusp</groupId>
<artifactId>yusp-app-common-client</artifactId>
</dependency>
<dependency>
<groupId>cn.com.yusys.yusp</groupId>
<artifactId>yusp-common-mapper</artifactId>
</dependency>
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
§ JavaConfig配置
在启动类上加@EnableFeignClients注解,并指定扫描的包名,如果已存在注解,通过basePackages={"...","cn.com.yusys.yusp"}方式添加
@EnableFeignClients(basePackages = "cn.com.yusys.yusp")
1
§ 业务逻辑层异常开发
@Autowired
private MessageProviderService messageProviderService;
public void chk() {
//检查数据有效性
if (!checkSysInfo("sysName", sysName, logicSysMapper)) {
logger.error("检查数据有效性失败,系统名称已存在");
throw new YuspException(messageProviderService.getMessage("100001"));
}
}
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
§ 异常配置
系统管理->公共参数配置->系统提示消息管理

§ 测试
系统管理->公共参数配置->逻辑系统管理 重复创建逻辑系统,预期:提示逻辑名称已存在

§ 扩展开发
YuspException基于RunTImeException进行封装,使用Spring Boot 提供的@ControllerAdvice注解,进行异常拦截,并统一转换为RestDto对象,Http状态为200
cn.com.yusys.yusp.commons.web.rest.errors.ExceptionTranslator.class
1
系统提供了关闭该异常拦截的配置
application.extrans.enabled=false
1
应用场景
- 业务逻辑开发,逻辑判断失败后的交互处理
- 二次继承,异常的细分操作:通讯业务、普通异常、校验异常等