У меня есть конкретная ситуация, когда мне нужно перехватывать исключения и возвращать объект клиенту вместо исключения. Я не могу поместить логику обработки исключений на более высокий уровень, то есть обернуть Foo в предложение try.
Лучше всего продемонстрировать на примере кода. Логика обработки исключений затуманивает намерение метода, и если у меня есть много методов с аналогичным намерением в классе Foo, я повторяю большую часть логики перехвата.
Как лучше всего обернуть общие функции исключений в приведенный ниже код?
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;}
}
}
}