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

 更新时间:2020年12月24日 11:28:51   作者:kemir_天明  
这篇文章主要介绍了Java 如何优雅的抛出业务异常,帮助大家更好的理解和使用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);
    }

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

以上就是Java 如何优雅的抛出业务异常的详细内容,更多关于java 抛出业务异常的资料请关注脚本之家其它相关文章!

相关文章

  • Spring-boot结合Shrio实现JWT的方法

    Spring-boot结合Shrio实现JWT的方法

    这篇文章主要介绍了Spring-boot结合Shrio实现JWT的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05
  • 浅谈java实现redis的发布订阅(简单易懂)

    浅谈java实现redis的发布订阅(简单易懂)

    本篇文章主要介绍了浅谈java实现 redis的发布订阅(简单易懂),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • java.sql.SQLException:com.mysql.cj.jdbc.Driver报错问题解决

    java.sql.SQLException:com.mysql.cj.jdbc.Driver报错问题解决

    这篇文章主要给大家介绍了关于java.sql.SQLException:com.mysql.cj.jdbc.Driver报错问题解决的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-08-08
  • Java Class.forName()用法和newInstance()方法原理解析

    Java Class.forName()用法和newInstance()方法原理解析

    这篇文章主要介绍了Java Class.forName()用法和newInstance()方法原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • Spring中TransactionSynchronizationManager的使用详解

    Spring中TransactionSynchronizationManager的使用详解

    这篇文章主要介绍了Spring中TransactionSynchronizationManager的使用详解,TransactionSynchronizationManager是事务同步管理器,监听事务的操作,来实现在事务前后可以添加一些指定操作,需要的朋友可以参考下
    2023-09-09
  • Java实现文件的分割与合并

    Java实现文件的分割与合并

    这篇文章主要为大家详细介绍了Java实现文件的分割与合并,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • SpringBoot中接收POST参数的几种方式详解

    SpringBoot中接收POST参数的几种方式详解

    这篇文章主要介绍了SpringBoot中接收POST参数的几种方式,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-06-06
  • Java中使用jaxp进行sax解析_动力节点Java学院整理

    Java中使用jaxp进行sax解析_动力节点Java学院整理

    使用SAX的优势在于其解析速度较快,相对于DOM而言占用内存较少。这篇文章主要介绍了Java中使用jaxp进行sax解析,需要的朋友可以参考下
    2017-08-08
  • java中的正则操作方法总结

    java中的正则操作方法总结

    关于正则表达式的使用,更多的是自己的经验,有兴趣可以参阅相关书籍。这里主要写一下java中的正则操作方法
    2013-10-10
  • 关于Spring MVC同名参数绑定问题的解决方法

    关于Spring MVC同名参数绑定问题的解决方法

    Spring MVC中的参数绑定还是蛮重要的,最近在使用中遇到了同名参数绑定的问题,想着总结分享出来,下面这篇文章主要给大家介绍了关于Spring MVC同名参数绑定问题的解决方法,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-08-08

最新评论