2011-09-07 105 views
0

我的應用中有很多Try/Catch塊來捕獲異常。我想閱讀這些處理的異常並將它們記錄到文件中。是否可以使用PostSharp讀取處理的異常?PostSharp句柄處理異常

回答

2

no。 PostSharp的工作方式是將你的方法封裝在自己的try/catch塊中,然後重新拋出異常。在你的方法中處理的任何異常都是內部try/catch,而postharp只有外部try/catch塊。您將要麼1)必須重新拋出異常或2)使用某個方面來處理這些異常。我都不推薦這兩種方法。

+0

我以爲PostSharp會有某種代碼注入的可能性。 – Tomas

+0

@Tomas不像你想的那樣。 – ILovePaperTowels

+0

這就是爲什麼我個人儘量避免編寫try catch塊。希望你可以重構和集中你的錯誤處理? –

0

處理這個(!)的一種方法是在catch中調用一個方法,該方法將記錄傳入異常的參數。只需傳入例外,記錄器就會記錄信息。

[LogParameters(LogLevel.Error)] 
private static void Error(Exception ex) { } 

public class LogParameters : OnMethodBoundaryAspect { 
    public override void OnEntry(MethodExcutionArgs args) { 
     for (int i=0; i<args.Arguments.Count; i++) { 
      // Get argument from args.Arguments.GetArgument(i) 
     } 
    } 
} 

使用的定製OnMethodBoundaryAspectOnEntry方法,你可以通過調用一個方法,並把在異常記錄異常的信息。該方法實際上不需要做任何事情,它只是用於環繞並記錄異常參數的模型。