Какие исключения нужно ловить при работе с SqlConnection, SqlDataReader, SqlCommand? - PullRequest
5 голосов
/ 03 декабря 2011

Я использую SqlConnection, SqlDataReader, SqlCommand и SqlParameters для связи с моей базой данных. Я ищу совет о том, чтобы поймать наиболее релевантный Exceptions вместо броска нового Exception(), это слишком широкий класс.

Вся помощь приветствуется!

1 Ответ

8 голосов
/ 03 декабря 2011

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

Кроме того, помимо документации по классам, вы можете просто попробовать эти условия и убедиться, что вы правильно обрабатываете условие.Несколько лет назад разработчик спросил меня, какое исключение будет выдано в различных технологиях, если связь будет потеряна, поэтому я вытащил его сетевой кабель, и мы запустили его код:)

Вот некоторые из них:

  1. Отключите сетевой кабель
  2. Отключите сетевой адаптер
  3. Остановите SQL Server
  4. Создайте цепочку, которая занимает очень много времени
  5. Пустьбаза данных / tempdb заполняется
  6. Убедитесь, что у вас нет разрешений для сервера sql
  7. Создайте sproc, который блокирует

В некоторых из этих случаев (сеть, тайм-аут, тупиковая жертва), возможно, вы захотите повторить попытку с увеличением ожидания.Для других, таких как db full, лучшее, на что вы можете надеяться, - это предоставить хорошее руководство или даже записать подробности для администратора.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...