我有一個類,如:如何捕獲CSharp中的類級別的所有異常?
class SampleRepositoryClass
{
void MethodA()
{
try
{
//do something
}
catch(Exception ex)
{
LogError(ex);
throw ex;
}
}
void MethodB(int a, int b)
{
try
{
//do something
}
catch(Exception ex)
{
LogError(ex);
throw ex;
}
}
List<int> MethodC(int userId)
{
try
{
//do something
}
catch(Exception ex)
{
LogError(ex);
throw ex;
}
}
}
在上面的例子中,你可以看到,在每一個方法(治法,方法b,MethodC)已經嘗試... catch塊來記錄錯誤,然後扔至更高水平。
想象一下,當我的Repository類可能有超過100個方法時,並且在每種方法中,我都嘗試... catch塊,即使只有一行代碼。
現在,我的意圖是減少這些重複的異常日誌記錄代碼,並在類級而不是方法級別記錄所有異常。
只有[面向方面的編程](http://en.wikipedia.org/wiki/Aspect-oriented_programming)工具/織工[像PostSharp](http://www.postsharp.net/)可以幫助你。順便說一下,在一個類中有超過一百種方法?這只是... *不好*。至少從我的角度來看。而且絕對可怕。 –
這是真的,但我的業務和存儲庫類有許多方法,使這些類太重。實際上,類中方法的數量取決於業務規則的複雜性或您想要執行的操作的數量。 – Haidar
請勿使用「throw ex;」因爲這會破壞你寶貴的調用堆棧。只需寫下「扔」;並且異常中的信息將被保留。有了這個說法,我想指出,除非你知道如何處理它們,否則你不應該發現異常。參考:http://stackoverflow.com/questions/730250/is-there-a-difference-between-throw-and-throw-ex –