[英]I need a way to wrap all my methods inside try catch
如果存在一種方法,我可以將所有方法包裝在try catch中,而無需在每個方法中編寫try catch。
當前,我們正在使用以下提到的方法:
public TValue ErrorHandler<TValue>(Func<TValue> action)
{
try
{
return (TValue)action();
}
catch (Exception ex)
{
//Handle Exception and Log it..........
return default(TValue);
}
}
public void ErrorHandler(Action action)
{
try
{
action();
}
catch (Exception ex)
{
//Handle Exception and Log it..........
}
}
用作:
public void ClearControls()
{
this.ErrorHandler(() =>
{
//................................
});
}
由於這在其中使用Lambda,因此如果在調試時編輯了代碼,它將強制再次運行應用程序。
請讓我知道任何其他可能的解決方案,在該解決方案中,我可以在所有方法中實施Try Catch並調試我的代碼而沒有任何麻煩。
諸如PostSharp之類的AOP框架可以在這里為您提供幫助。 有關於一個博客帖子OnExceptionAspect
這里 。
基本上是最終結果,而不是將try-catch放入方法中,而是使用屬性(在這種情況下為方面)裝飾方法。
就我個人而言,我從來沒有真正使用過它,因為我只嘗試/捕獲我可以處理的事情,而從未需要過諸如按方法記錄整個應用程序之類的東西。 如果您無法處理,請不要抓住它。
try-catch
。 在通常可能看到異常而代碼中沒有錯誤的地方(例如IO操作)使用try-catch
。 如果包裝了所有內容,則實際上可能會使測試和調試更加困難,從而導致較低質量的代碼。 讓漏洞冒出來,並在開發的早期階段將它們捕獲。 try-catch
執行的所有其他常見操作,並在catch
塊中簡單地使用該方法。 try-catch
塊未處理的異常。 最簡單的解決方案是捕獲調用方中的錯誤,或者更進一步,即通常是Program.cs或global.asax.cs的線程入口點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.