我有一个类,如:如何捕获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 –