我有一种特殊情况,我需要捕获异常并将一个对象返回给客户端以代替异常。我不能将异常处理逻辑放在更高级别,即将 Foo 包装在 try 子句中。
最好用一些示例代码来演示。异常处理逻辑模糊了方法的意图,如果我有许多类似意图的方法,在 Foo 类中,我发现自己重复了大部分的 catch 逻辑。
在下面的代码中包装常见异常功能的最佳技术是什么?
public class Foo
{
public Bar SomeMethodThatCanThrowExcepetion()
{
try
{
return new Bar().Execute();
}
catch(BazException ex)
{
WriteLogMessage(ex, Bar.ErrorCode);
return new Bar() { ErrorMessage = ex.Message, ErrorCode = Bar.ErrorCode;}
}
}
public Baz SomeMethodThatCanThrowExcepetion(SomeObject stuff)
{
try
{
return new Baz(stuff).Execute();
}
catch(BazException ex)
{
WriteLogMessage(ex, Baz.ErrorCode);
return new Baz() { ErrorMessage = ex.Message, ErrorCode = Baz.ErrorCode;}
}
}
}