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 抛出业务异常的资料请关注脚本之家其它相关文章!

相关文章

  • Java Web开发防止多用户重复登录的完美解决方案

    Java Web开发防止多用户重复登录的完美解决方案

    在web项目开发中,很多情况下都可以让同一个账号信息在不同的登录入口登录很多次,这样子做的不是很完善。一般解决这种情况有两种解决方案,小编呢主要以第二种方式给大家介绍具体的实现方法,对java web 防止多用户重复登录的解决方案感兴趣的朋友一起看看吧
    2016-11-11
  • 使用JavaConfig代替xml实现Spring配置操作

    使用JavaConfig代替xml实现Spring配置操作

    这篇文章主要介绍了使用JavaConfig代替xml实现Spring配置操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • SpringCloud使用Kafka Streams实现实时数据处理

    SpringCloud使用Kafka Streams实现实时数据处理

    使用Kafka Streams在Spring Cloud中实现实时数据处理可以帮助我们构建可扩展、高性能的实时数据处理应用,Kafka Streams是一个基于Kafka的流处理库,本文介绍了如何在SpringCloud中使用Kafka Streams实现实时数据处理,需要的朋友可以参考下
    2024-07-07
  • Java使用get请求接收List集合数据(json)并导出报表问题

    Java使用get请求接收List集合数据(json)并导出报表问题

    这篇文章主要介绍了Java使用get请求接收List集合数据(json)并导出报表问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • SpringBoot中配置Redis连接池的完整指南

    SpringBoot中配置Redis连接池的完整指南

    这篇文章主要为大家详细介绍了SpringBoot中配置Redis连接池的完整指南,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下
    2025-04-04
  • springboot配置resilience4j全过程

    springboot配置resilience4j全过程

    这篇文章主要介绍了springboot配置resilience4j全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • 解决springboot运行出现错误:找不到或无法加载主类com.xxxx.xxxx.Application问题

    解决springboot运行出现错误:找不到或无法加载主类com.xxxx.xxxx.Application问题

    文章介绍了在服务器上运行一个未使用的Java项目时遇到的“找不到或无法加载主类”错误,并提供了两种解决方法:通过Maven install或build …、Goals输入install并跳过测试来重新构建项目
    2024-11-11
  • JVM系列之:再谈java中的safepoint说明

    JVM系列之:再谈java中的safepoint说明

    这篇文章主要介绍了JVM系列之:再谈java中的safepoint说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • Maven的pom.xml文件结构中的build

    Maven的pom.xml文件结构中的build

    本文主要介绍了Maven的pom.xml文件结构中的build,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • 详解java中spring里的三大拦截器

    详解java中spring里的三大拦截器

    在本篇文章里我们给大家详细讲述了java中spring里的三大拦截器相关知识点以及用法代码,需要的朋友们学习下。
    2018-10-10

最新评论