Природа сети такова, что вы часто не знаете, что есть проблема, пока не попытаетесь отправить данные. Если вы просто вытащите штекер из задней части компьютера (или вытащите штекер из коммутатора где-то между вашим клиентом и сервером), то операционная система не сможет узнать, пока она на самом деле не попытается отправить данные, которые есть даже проблема.
Причина, по которой State
ненадежна, состоит в том, что невозможно сделать полностью надежным без фактической попытки отправки данных на сервер . Поскольку это слишком много работы для простого свойства (целое обходное соединение в сети), оно этого не делает, а просто делает простейшую возможную вещь.
Кроме того, существует тот факт, что между вызовом State == Open
и фактическим выполнением команды существует условие состязания: вы можете вызвать State == Open
, а затем кто-то потянет за вилку перед выполнением команды.
Итак, в конце концов, вам все равно придется иметь этот обработчик исключений. Я также хотел бы предложить, чтобы вы не помещали исключение вокруг каждого отдельного вызова в базу данных. Если вы работаете с веб-сайтом, то используйте обработчик на уровне страниц и оставьте все как есть. В действительности нет никакого смысла пытаться «обработать» базу данных, выходящую из строя каким-либо иным способом, кроме отображения сообщения об ошибке пользователю в любом случае ...