代碼質量控制之異常控制

首先來看異常的根節點java

Throwable是全部異常的根,java.lang.Throwable
  Error是錯誤,java.lang.Error
  Error類體系描述了Java運行系統中的內部錯誤以及資源耗盡的情形.這種異常會致使JVM中斷,必須人爲處理
    java虛擬機中發生的,不須要程序猿try-catch或者拋出
    StackOutFlowError(棧溢出)和OutOfMemoryError(堆溢出),都屬於Error,中間層是VirtualMachineError
    Exception是異常,java.lang.Exception 繼承 Throwable
      IOException(必須捕獲異常)
        FileNotFoundException
        EOFException
      RuntimeException(可捕獲異常)
        NullPointerException
        ClassNotFoundException
        ...app

自定異常this

public class TraceException extends RuntimeException{

    private ExceptionEnums exceptionEnums;

    public TraceException(ExceptionEnums exceptionEnums) {
        super(exceptionEnums.getMessage());
        this.exceptionEnums = exceptionEnums;
    }

    public static String getTraceInfo(Throwable t) {
        StringWriter stringWriter= new StringWriter();
        PrintWriter writer= new PrintWriter(stringWriter);
        t.printStackTrace(writer);
        StringBuffer buffer= stringWriter.getBuffer();
        String[] str = buffer.toString().split("\\r\\n\\t");
        buffer = new StringBuffer();
        buffer.append("exception:").append(str[0]).append("\tdetail:").append(str[1]);
        writer.close();
        return buffer.toString();
    }

}

自定義返回信息code

public enum  ExceptionEnums {

    COMMON_EXP("5000", "系統異常"),

    NOT_FOUND_DATA_EXP("1001", "未找到數據")
    ;

    private String code;
    private String message;

    ExceptionEnums(String code, String message) {
        this.code = code;
        this.message = message;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }
}

  

運行查看blog

public class ClientExcetion {


    public static void main(String[] args) {
        try {
            getData();
        }catch (TraceException e){
            System.out.println(e.getMessage());
        }
    }

    public static void getData() {
        try {
            String[] a = {};
            String c = a[3];
            System.out.println(c);
        }catch (Exception e){
            System.out.println(TraceException.getTraceInfo(e));
            throw new TraceException(ExceptionEnums.COMMON_EXP);
        }
    }

}
相關文章
相關標籤/搜索