• 如何优雅的抛出业务异常


      记得上学的时候学习英语,每个英语老师说到英语翻译的时候都会说英语翻译要做到“信、达、雅”。如今做了一名程序员竟然体会我还是想用这三种境界来要求自己,恰逢自己现在所做之项目偏业务,代码的优雅显得格外重要。所以我就想写点这方面的东西,今天就先来说说如何优雅的抛出业务异常。代码千千万,只希望对自己和对大家有所帮助。

      针对java开发者而言,异常的重要性不言而喻,这里也不再赘述。今天主要说说在业务中利用异常处理机制来实现业务异常的优雅提示。

    首先,我们定义一个异常编码接口

    1 public interface IErrorCode {
    2     public String value();
    3 }

    重点来了,我们去实现这个接口

     1 import java.util.EnumMap;
     2 
     3 import com.test.IErrorCode;
     4 
     5 public enum MyBusinessErrorCode implements IErrorCode {
     6 
     7     /**
     8      * 角色不存在或已被删除
     9      */
    10     ERR_MODEL_001,
    11     /**
    12      * 角色编码已存在
    13      */
    14     ERR_MODEL_002;
    15 
    16     private static EnumMap<MyBusinessErrorCode, String> errorCodeMap = new EnumMap<MyBusinessErrorCode, String>(
    17             MyBusinessErrorCode.class);
    18 
    19     static {
    20         errorCodeMap.put(ERR_MODEL_001, "角色不存在!");
    21         errorCodeMap.put(ERR_MODEL_002, "角色编码已存在!");
    22     }
    23 
    24     public String value() {
    25         return errorCodeMap.get(this);
    26     }
    27 }

    下面我们来说说这段代码好在哪里,

    • 统一定义异常提示,易于维护,易于国际化配置化。
    • 采用枚举Map运行效率更高。
    • 代码逻辑清晰,更容易上手,更容易统一风格。

    那么如何在代码中去使用呢?

    首先,创建一个创建异常的工具类

     1 public class ExceptionUtil {
     2 
     3     /**
     4      * 获取业务异常类
     5      */
     6     public static BusinessException CreateBusinessException(
     7             IErrorCode code) {
     8         return new BusinessException(code);
     9     }
    10     
    11     /**
    12      * 获取带数据格式化的业务异常类
    13      * 
    14      * @param code
    15      */
    16     public static BusinessException CreateFormatedBusinessException(BusinessErrorCode code, Object ... object){
    17         String str = code.value();
    18         str = String.format(str, object);
    19         return new BusinessException(code.name(), str, "");
    20     }
    21 
    22 }

    在对应的业务方法捕获并处理异常

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

    至此,业务异常就得到了优雅的处理。

  • 相关阅读:
    MySQL中的char与varchar详解
    有关PHPstorm的git环境的配置和git密钥的生成总结
    PHP开发中常用的字符串操作函数
    PHP 二维数组排序函数的应用 array_multisort()
    大龄程序员的出路在哪里
    近期面试总结(PHP后端开发工程师)(部分笔试题)
    B-Tree目录和Hash索引的区别
    curl、fopen和file_get_contents区别
    什么是OAuth授权
    SEO 统计算法
  • 原文地址:https://www.cnblogs.com/kemir1105/p/14176250.html
Copyright © 2020-2023  润新知