C 錯誤統一捕捉處理新方式

2021-06-13 19:38:47 字數 1170 閱讀 1099

近段時間做的乙個三層架構+wcf+nhibernate的c/s專案,專案中的錯誤捕捉處理一直都很頭疼,

今天終於找到了乙個可以接受的方案。

首先,在前台捕捉所有未處理執行緒的錯誤做統一處理。

詳見:winform程式中未處理異常的解決方法

其次,是wcf服務後台的錯誤處理,在錯誤契約把錯誤回發前台之前,把錯誤資訊記錄到錯誤日誌。

可參見:

wcf分布式開發步步為贏(15):錯誤契約(faultcontract)與異常處理(exceptionhandle)

最後,還需要一種簡單靈活的錯誤處理方式,既不用手寫try-catch塊,又能對錯誤進行統一的處理。

按照設想,應該做到的功能是在要用try-catch塊把要執行的方法包住。網上漫天找,什麼c#aop的也去看了,

都不是很理想,

想了很久,突然出現了一絲靈光,於是,便有了以下**:

原理是c#的委託機制。

///

/// 要執行的方法

///

public delegate void methodtodo();

///

/// 處理錯誤的方法

///

/// 錯誤物件

public delegate void methoddealexception(exception e);

///

/// 將方法用try - catch塊包圍

///

public class trycatch

///

/// 將方法用try - catch塊包圍

///

/// 要執行的方法

/// 處理錯誤的方法

public trycatch(methodtodo methodtodo, methoddealexception methoddealexception)

public void do()

catch (exception ex)

}else //執行統一的錯誤處理方法}}

}}}以上這個錯誤處理類可以這樣呼叫:

先宣告要執行的方法,如:

private void cal()

private int calint(string p)

然後便可以呼叫處理類來執行了:

new trycatch(cal);

基於Spring Boot 的統一錯誤處理

我將展示一下如何在spring boot 下實現統一錯誤處理,使用的工具是idea。首先,我們需要定義乙個自定義名稱的錯誤控制類,我把它叫做weberrorcontroller,這個類需要實現errorcontroller介面,並且重寫裡面的geterrorpath方法才能實現統一錯誤處理,如下 p...

Web應用架構 錯誤統一處理, 和事務統一處理

因為前期,重點放在業務分析上,這兩塊一直認真思考過,覺得很簡單.一開始只是找了乙個nhibernate的示例,就決定把session的open和close和事務 transaction 的commit,放在httpmodule中處理.算是session per request的模式.之後,繼續加入錯...

Web應用架構 錯誤統一處理, 和事務統一處理

因為前期,重點放在業務分析上,這兩塊一直認真思考過,覺得很簡單.一開始只是找了乙個nhibernate的示例,就決定把session的open和close和事務 transaction 的commit,放在httpmodule中處理.算是session per request的模式.之後,繼續加入錯...