Как сделать так, чтобы этот код обработки исключений соответствовал принципу DRY?

У меня есть конкретная ситуация, когда мне нужно перехватывать исключения и возвращать объект клиенту вместо исключения. Я не могу поместить логику обработки исключений на более высокий уровень, то есть обернуть 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;}                  
          }
     }
 } 
7
задан fin 5 September 2015 в 23:17
поделиться