У меня есть объект Result, который позволяет передавать список сообщений о событиях, и я могу проверить, было ли действие успешным или нет.
Я понял, что написал этот код во многих местах
Result result;
try
{
//Do Something
...
//New result is automatically a success for not having any errors in it
result = new Result();
}
catch (Exception exception)
{
//Extension method that returns a Result from the exception
result = exception.ToResult();
}
if(result.Success) ....
Я собираюсь заменить это использование на
.
public static Result CatchException(Action action)
{
try
{
action();
return new Result();
}
catch (Exception exception)
{
return exception.ToResult();
}
}
А затем используйте его как
var result = Result.CatchException(() => _model.Save(something));
Кто-нибудь чувствует, что с этим что-то не так, или я обмениваю возможность повторного использования на мрак?
Редактировать: Причина, по которой я перехватываю все исключения, заключается в том, что я использую этот код внутри своих классов ViewPresenter в любой момент, когда я взаимодействую с моей моделью, поскольку, если я получу необработанное исключение, я предпочел бы отобразить фактическое ошибка для пользователя (внутреннее приложение), а не просто перенаправление им страницы общей ошибки.