C# Может ли пользовательское исключение ловить / убивать себя?

Мой код выглядит так

var i = 0;
try
{
    i = faultyProcedure();
}
catch (Exception ex)
{
    try
    {
        throw new CustomException("faultyProcedure called", ex);
    }
    catch (CustomException) {}
}

Хотя это работает, это выглядит глупо. Настраиваемое исключение делает все записи, рассылки и т. Д. Даже выходит из приложения, если это необходимо.

Есть ли способ для пользовательского исключения перехватить / уничтожить себя, поэтому нет необходимости во внутреннем блоке try/catch?

1 ответ

Решение

Итак... вы используете свой CustomException обрабатывать другие исключения? Если это так, то я извиняюсь за то, что скажу вам, но это не просто выглядит глупо, это глупо.

Это не то, что исключения.

Исключения предназначены для указания исключительных ситуаций, в основном тех вещей, которые вы не можете контролировать при написании кода, таких как проблемы ввода-вывода или проблемы с сетью.

Для обработки исключений вы можете написать свой код в любом классе, но нет смысла бросать новое исключение просто для обработки исключения, которое было перехвачено предложением catch.

Я считаю, что это пример неприятного исключения:

Vexing исключения являются результатом неудачных дизайнерских решений. Vexing исключения создаются в совершенно не исключительных обстоятельствах, и поэтому должны быть пойманы и обрабатываться все время.

Пример в блоге Эрика Липперта: int.Parse, но я думаю, что этот код так же действителен, как пример неприятного исключения.

Другие вопросы по тегам