Я хотел бы предложить вам, что, если вы не знаете, что делать с исключением, не поймайте его.Слишком часто кодеры ловят исключения и просто проглатывают их целиком.
catch (Exception ex)
{
/* I don't know what to do.. *gulp!* */
}
Очевидно, что это нехорошо, потому что происходят плохие вещи, и никаких действий не предпринимается.Улавливайте только те исключения, которые являются действующими!
Тем не менее, изящная обработка ошибок важна.Не хотите, чтобы ваше приложение зависало, верно?ELMAH может оказаться полезным для веб-приложений, а глобальный обработчик исключений довольно легко настроить для WinForms или XAML-приложений для настольных компьютеров.
Собрав все это вместе, вы можете найти эту стратегию полезной: 1. поймать определенные исключениячто вы знаете, что это может произойти (DivideByZeroException, SQLException и т. д.) и уклониться от универсального общего исключения;2. повторно поднять исключение после обработки.например,
catch (SQLException ex)
{
/* TODO: Log the error somewhere other than the database... */
throw; // Rethrow while preserving the stack trace.
}
Что вы действительно можете сделать с SQLException?Соединение с базой данных исчезло?Это был плохой запрос?Вы, вероятно, не хотите добавлять всю логику обработки для этого, и кроме того, что, если это то, чего вы не ожидали?Так что просто обработайте исключение, если можете, повторно поднимите , если вы не уверены, что оно разрешено, и изящно обработайте его на уровне global (например, Показать сообщение типа "Что-то пошло"неправильно, но вы можете продолжить работу. Подробная информация: '[ex.Message]'. Прервать или повторить? ")
HTH!
Джон Сондерс, спасибо за исправление.