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
, но я думаю, что этот код так же действителен, как пример неприятного исключения.