2009-06-18 79 views
4

我目前正在處理一個問題,我有很多iterfaces和它們的實現都是用unity創建的。這些類包含一些在常規基礎上拋出異常的方法,我想創建一個圍繞這些類的動態代理,這樣我就可以捕獲在方法中發生的所有異常,並將它們處理到別的地方。統一攔截和例外

因爲我在玩Unity,所以不知道是否可以使用Unity Interception來完成這樣的事情。

即創建TransparentProxyInterceptor並圍繞這些方法的invocatino包裝一個try-catch塊。這是可能的嗎?或者我會進入錯誤的方向? 謝謝

回答

6

是的,Unity攔截(AOP)是處理異常處理的好方法。您可以添加各種行爲,如:

  • 寫入日誌文件或事件日誌
  • 發送電子郵件
  • 增量性能計數器
  • 自動對超時或鎖定異常重試
  • 重新拋出不同的錯誤

您的來電處理程序將看起來像:

public override IMethodReturn Invoke(IMethodInvocation input, GetNextHandlerDelegate getNext) 
{ 
    IMethodReturn result = getNext()(input, getNext); 

    if (result.Exception != null) 
    { 
     // do something 
    } 

    return result; 
}