自定義異常型別
自定義錯誤**及錯誤資訊
對於可預知的異常由程式設計師在**中主動丟擲 由springmvc捕獲
可預知異常是程式設計師在**中手動丟擲本系統定義的特定異常型別,由於是程式設計師丟擲的異常,通常異常資訊比較
齊全,程式設計師在丟擲時會指定錯誤**及錯誤資訊,獲取異常資訊也比較方便。
對於不可預知的異常(執行時異常)由springmvc統一捕獲exception型別的異常
不可預知異常通常是由於系統出現bug、或一些不要抗拒的錯誤(比如網路中斷、伺服器宕機等),異常型別為runtimeexception型別(執行時異常)
可預知的異常及不可預知的執行時異常最終會採用統一的資訊格式(錯誤**+錯誤資訊)來表示 最後也會隨請求相應給客戶端
具體的流程
在controller、service、dao中程式設計師拋出自定義異常;springmvc框架丟擲框架異常型別
統一由異常捕獲類捕獲異常,並進行處理
捕獲到自定義異常則直接取出錯誤**及錯誤資訊 相應給客戶
捕獲到非自定義異常型別首先從map中找該異常型別是否對應具體的錯誤** 如果由則去除錯誤**及錯誤資訊返回給客戶 如果map中找不到異常型別所對應哪個的錯誤**則統一位99999錯誤**並返回給使用者
在service方法中的編碼順序是先校驗判斷,有問題則丟擲具體的y異常資訊,最後執行具體的業務操作 返回成功資訊
編寫統一異常處理類去捕獲異常 向使用者返回統一規範的相應資訊
service模板
首先定義相應格式
編寫自定義異常類
異常丟擲類
異常捕獲類
/** * user: 李錦卓
* time: 2019/1/8 17:17
*/@controlleradvice
public class exceptioncatch
//使用exceptions存放異常型別和錯誤**對映 immutablemap的特點是一旦建立不可改變 並且執行緒安全
// 定義map 配置異常型別所對應的錯誤**
private static immutablemap, resultcode> exceptions;
//定義map的builder物件 去構建immutablemap物件
protected static immutablemap.builder, resultcode> builder = immutablemap.builder();
//使用build來構建乙個y異常型別和錯誤**異常
@exceptionhandler(exception.class)
@responsebody
public responseresult exception(exception e)
//從exceptions中找異常型別所對因的錯誤** 如果找到了將錯誤**相應給使用者 如果找不到響應9999異常
resultcode resultcode = exceptions.get(e.getclass());
if (resultcode != null) else
}static
}測試 丟擲異常
前端相應資訊
WebApi 異常處理解決方案
public class webapiexceptionfilterattribute exceptionfilterattribute else if actionexecutedcontext.exception is timeoutexception 這裡可以根據專案需要返回到客戶端特定的狀態...
WebApi 異常處理解決方案
1.繼承exceptionfilterattribute類,重寫onexception方法 public class webapiexceptionfilterattribute exceptionfilterattribute string errmsg jsonconvert.serialize...
WebApi異常處理解決方案
一 使用異常篩選器捕獲所有異常 public class webapiexceptionfilterattribute exceptionfilterattribute else if actionexecutedcontext.exception is timeoutexception 這裡可以根...