Java 如何优雅的抛出业务异常
作者:kemir_天明 发布时间:2023-11-24 04:04:34
标签:Java,业务,异常
记得上学的时候学习英语,每个英语老师说到英语翻译的时候都会说英语翻译要做到“信、达、雅”。如今做了一名程序员竟然体会我还是想用这三种境界来要求自己,恰逢自己现在所做之项目偏业务,代码的优雅显得格外重要。所以我就想写点这方面的东西,今天就先来说说如何优雅的抛出业务异常。代码千千万,只希望对自己和对大家有所帮助。
针对java开发者而言,异常的重要性不言而喻,这里也不再赘述。今天主要说说在业务中利用异常处理机制来实现业务异常的优雅提示。
首先,我们定义一个异常编码接口
public interface IErrorCode {
public String value();
}
重点来了,我们去实现这个接口
import java.util.EnumMap;
import com.test.IErrorCode;
public enum MyBusinessErrorCode implements IErrorCode {
/**
* 角色不存在或已被删除
*/
ERR_MODEL_001,
/**
* 角色编码已存在
*/
ERR_MODEL_002;
private static EnumMap<MyBusinessErrorCode, String> errorCodeMap = new EnumMap<MyBusinessErrorCode, String>(
MyBusinessErrorCode.class);
static {
errorCodeMap.put(ERR_MODEL_001, "角色不存在!");
errorCodeMap.put(ERR_MODEL_002, "角色编码已存在!");
}
public String value() {
return errorCodeMap.get(this);
}
}
下面我们来说说这段代码好在哪里,
统一定义异常提示,易于维护,易于国际化配置化。
采用枚举Map运行效率更高。
代码逻辑清晰,更容易上手,更容易统一风格。
那么如何在代码中去使用呢?
首先,创建一个创建异常的工具类
public class ExceptionUtil {
/**
* 获取业务异常类
*/
public static BusinessException CreateBusinessException(
IErrorCode code) {
return new BusinessException(code);
}
/**
* 获取带数据格式化的业务异常类
*
* @param code
*/
public static BusinessException CreateFormatedBusinessException(BusinessErrorCode code, Object ... object){
String str = code.value();
str = String.format(str, object);
return new BusinessException(code.name(), str, "");
}
}
在对应的业务方法捕获并处理异常
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date;
try {
// 申请时间
date = sdf.parse(form.getApplyDateView());
} catch (ParseException e) {
throw ExceptionUtil.CreateBusinessException(MyBusinessErrorCode.ERR_RBM_005);
}
至此,业务异常就得到了优雅的处理。
来源:https://www.cnblogs.com/kemir1105/p/14176250.html


猜你喜欢
- 动态数据源在很多具体应用场景的时候,我们需要用到动态数据源的情况,比如多租户的场景,系统登录时需要根据用户信息切换到用户对应的数据库。又比如
- 一直以来,Java/Spring开发被认为是笨重的代表,无法快速生成项目原型和骨架。所以,Spring推出了Spring Roo这个项目,帮
- 本文讲解了如果通过springboot快速开发web服务,并读取zookeeper的过程,为后续的“在docker下部署
- 今天就来拿贪吃蛇小游戏来练练手吧!贪吃蛇游戏规则: 1.按下空格键(游戏未结束)则游戏
- 1.前言本来想拿学校机房的Android编辑器直接粘到自己电脑上用,发现它的eclipse是32位的,而我的JDK是64位的,于是想到干脆装
- spring boot版本和spring cloud版本框架版本SpringBoot2.3.12.RELEASESpringCloudHox
- 1、用字符串分隔: using System.Text.RegularExpressions; string str="aaajs
- 通过java的File类创建临时文件,然后在程序退出时自动删除临时文件。下面将通过创建一个JFrame界面,点击创建按钮在当前目录下面创建t
- 本文介绍了ListView给每个Item上面的按钮添加事件,具体如下:1.先看下效果图:在这里仅供测试,我把数据都写死了,根据需要可以自己进
- 本文实例讲述了C#实现带百分比的进度条功能。分享给大家供大家参考,具体如下:功能需求:如果程序中会执行一个耗时的计算过程,我想在用户点击按钮
- SimpleDateFormat是处理日期格式转换的类。官方API_1.8关于SimpleDateFormat继承于DateFormate截
- 本文实例讲述了Android自定义照相机Camera出现黑屏的解决方法。分享给大家供大家参考,具体如下:对于一些手机,像HTC,当自定义Ca
- “读多写少”是大部分项目的一个特点。例如“购物”,总是看的人
- 前言:上篇C#进阶系列——WebApi接口传参不再困惑:传参详解介绍了WebApi参数的传递,这篇来看看WebApi里面异常的处理。关于异常
- 简介通过 pulsar-flink-connector 读取到 Apache pulsar 中的namespaces、topics的元数据信
- 相关知识:Java中三种简单注解介绍和代码实例一、作用用 @Deprecated注解的程序元素,不鼓励程序员使用这样的元素,通常是因为它很危
- 使用ehcache-spring-annotations使得在工程中简单配置即可使用缓存下载地址:http://code.google.co
- 1.editplus1.1 官方下载https://www.editplus.com/官方下载最新的64位2 .解压就可以使用2.1 vsc
- 写作原因:跨进程通信的实现和理解是Android进阶中重要的一环。下面博主分享IPC一些相关知识、操作及自己在学习IPC过程中的一些理解。这
- 简介 相信很多人都接触spring框架很长时间了,每次搭建spring框架的时候都需要配置好多的jar、xml,做很多繁琐重复的配置,稍微不