首先寫一個自定義異常,繼承Exception,代碼以下前端
public class NoMappingParamString extends Exception { /*無參構造函數*/ public NoMappingParamString(){ super(); } //用詳細信息指定一個異常 public NoMappingParamString(String message){ super(message); } //用指定的詳細信息和緣由構造一個新的異常 public NoMappingParamString(String message, Throwable cause){ super(message,cause); } //用指定緣由構造一個新的異常 public NoMappingParamString(Throwable cause) { super(cause); } }
若是自定義異常是爲了提示,必定要用try..catch,不要直接用throw往外拋。這樣只能被框架捕獲。後端
/*結果resultType字段set方法*/ public void setResultType(String resultType) { this.resultType = resultType == null ? null : resultType.trim(); //resultType結果封裝 //自定義一個resultTypeString字段,用來根據resultType的值(1,2,3)自動生成對應的文本 /*這樣寫的好處是集中管理,後臺代碼中只在此處管理,很差的地方是運營時忽然加一個值就會返回未知類型,要更新要把後端從新編譯發佈,也就意味着要重啓(把值傳給前端讓前端判斷是不用重啓的)。這種方案只適用於類型固定的字段*/ if (resultType!=null) { int rt = Integer.parseInt(resultType); //將flag轉換爲int值 switch (rt) { //判斷屬於那種類型,就給resultTypeString賦予對應的值 case 1: resultTypeString ="未處理"; break; case 2: resultTypeString ="自動解除"; break; case 3: resultTypeString ="已解除"; break; default: resultTypeString = "未知類型"; /*這裏必定要try catch異常,由於這是set方法,throw出去大部分狀況是被框架獲取*/ try { /*實例化自定義異常*/ NoMappingParamString exception = new NoMappingParamString("resultType類型未完善"+"未知resultType:"+resultType); /*拋出異常*/ throw exception; } catch (NoMappingParamString e) { //捕獲異常 System.err.println("異常信息:"+e.getMessage()); //獲取異常信息,就是上面傳的message e.printStackTrace(); //把棧信息打印出來 } break; } }else { resultTypeString = ""; //若是flag爲null返回爲空 } }
僅僅爲了提示,又不想自定義一個Exception,能夠用RuntimeException。這個能夠拋出異常,並準肯定位,缺點是不能處理這個異常,自定義異常的話能夠捕獲而且處理。app
public Queue(int initialSize) { if (initialSize >= 0) { this.maxSize = initialSize; data = new Object[initialSize]; }else { throw new RuntimeException("初始化大小不能小於0:"+initialSize); } }