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 拋出業務異常的資料請關註WalkonNet其它相關文章!

推薦閱讀: