天天看點

java 錯誤資訊封裝_Java異常封裝(自定義錯誤資訊和描述)

一、checked異常和unchecked異常

checked異常:

表示無效,不是程式中可以預測的。比如無效的使用者輸入,檔案不存在,網絡或者資料庫連結錯誤。這些都是外在的原因,都不是程式内部可以控制的。

必須在代碼中顯式地處理。比如try-catch塊處理,或者給所在的方法加上throws說明,将異常抛到調用棧的上一層。

繼承自java.lang.Exception(java.lang.RuntimeException除外)。

unchecked異常:

表示錯誤,程式的邏輯錯誤。是RuntimeException的子類,比如IllegalArgumentException, NullPointerException和IllegalStateException。

不需要在代碼中顯式地捕獲unchecked異常做處理。

繼承自java.lang.RuntimeException(而java.lang.RuntimeException繼承自java.lang.Exception)。

java 錯誤資訊封裝_Java異常封裝(自定義錯誤資訊和描述)

二、異常封裝示例

2.1、添加一個枚舉LuoErrorCode.java如下:

public enum LuoErrorCode {

NULL_OBJ("LUO001","對象為空"),

ERROR_ADD_USER("LUO002","添加使用者失敗"),

UNKNOWN_ERROR("LUO999","系統繁忙,請稍後再試....");

private String value;

private String desc;

private LuoErrorCode(String value, String desc) {

this.setValue(value);

this.setDesc(desc);

}

public String getValue() {

return value;

}

public void setValue(String value) {

this.value = value;

}

public String getDesc() {

return desc;

}

public void setDesc(String desc) {

this.desc = desc;

}

@Override

public String toString() {

return "[" + this.value + "]" + this.desc;

}

}

2.2、建立一個異常類BusinessException.java,繼承RuntimeException:

public class BusinessException extends RuntimeException {

private static final long serialVersionUID = 1L;

public BusinessException(Object Obj) {

super(Obj.toString());

}

}

第一點是其繼承了RuntimeException,因為一般我們的業務異常都是運作時異常。第二點,這裡的構造方法調用父方法super(Obj.toString());

2.3、測試類ExceptionTest.java:

public class ExceptionTest {

public static void main(String args[]) {

Object user = null;

if(user == null){

throw new BusinessException(LuoErrorCode.NULL_OBJ);

}

}

}

原文連結:

Java異常封裝(自己定義錯誤碼和描述,附源碼)