近段時間做的乙個三層架構+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的模式.之後,繼續加入錯...