目前我有Exception helper Class
public class ExceptionHelper
{
public static void Catch(Action action)
{
try
{
action();
}
catch (Exception ex)
{
// log error and thorw
// Do what you want
}
}
}
这用于包装其他类中的方法以捕获和记录像这样的异常
public static class RepoManger1
{
public static void TestMethod(string something)
{
ExceptionHelper.Catch(() =>
{
Int32 testvar1 = 10;
Int32 testvar2 = 0;
Int32 testvar3 = testvar1 / testvar2;
});
}
}
我正在考虑将其转换为可在Attribute
上定义的class or method
所以我不必在每个方法上都写这个代码。
也可以针对相同的
建议任何其他方法答案 0 :(得分:0)
属性旨在提供有关类或方法的额外信息,而如果我理解正确,您希望将具有属性的方法自动包装在异常处理代码中,这是不可能的。
在我看来,这里最好的事情就是这样:
public class ExceptionHelper {
public static void ProcessException(Exception exc) {
// common exception handling code
// e.g. log error, but DO NOT throw
}
}
public static class RepoManger1 {
public static void TestMethod(string something) {
try {
// do something
} catch (Exception exc) {
ExceptionHelper.ProcessException(exc);
// if necessary, re-throw the exception HERE, so that
// people reading your code can see that the exception
// is being re-thrown
throw;
}
}
}
我认为这比您之前的方法(以及涉及属性的任何可能解决方案)更具可读性。当我查看这段代码时,我立即明白你正在捕捉异常并使用它做一些事情,在其他情况下需要一段时间来弄明白。