異常解決方案

2021-09-08 03:25:50 字數 2938 閱讀 4752

自定義異常型別

自定義錯誤**及錯誤資訊

對於可預知的異常由程式設計師在**中主動丟擲 由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 這裡可以根...