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