Предполагая, что вы отлаживаете это в VS. VS остановится на исключении, даже если у вас есть обработчик исключений , потому что вы находитесь в режиме отладки. Если вы запустите это за пределами студии, исключение будет обработано блоком. Вы также можете просто нажать F5 (Run), чтобы продолжить.
Но это, на мой взгляд, просто боковое шоу. Код, который вы показали, довольно плох. Этот фрагмент подразумевает, что вы открываете одно соединение, используя это для создания одного или нескольких вызовов БД, а затем где-то по пути у вас есть другой метод его закрытия.
Вы никогда не должны инициализировать/управлять соединениями от того места, где вы на самом деле их используете. Пул соединений более чем способен правильно обрабатывать большое количество соединений/разъединений. Причина, по которой вы должны сохранить этот код вместе, заключается в том, что чем больше событий между открытием и закрытием соединения, тем больше возможностей, которые ваш код неправильно удаляет из этих объектов. Когда они не будут удалены, пул соединений будет кратером с очень странными и трудными для отладки проблем, а использование памяти идет вверх.
Объекты базы данных соединения и команды являются неуправляемыми объектами. Они реализуют IDisposable, потому что они управляют неуправляемыми ресурсами. Примером правильного способа это является:
using (SqlConnection conn = new SqlConnection(connstring)) {
using (SqlCommand cmd = new SqlCommand(conn)) {
// do atomic database stuff
}
}
Операторы использования автоматически закрывают и удаляют эти объекты. Пул соединений (который вам даже не нужно думать) гарантирует, что если вы вызовете вышеуказанный код 1000 раз, он все равно будет работать очень быстро.
Прокомментируйте строку 'kleir = true;' и посмотрите, не вызывает ли она ошибку. – Brian
@Brian по-прежнему та же проблема, я даже пытался просто использовать 'return false' и' return true' вместо 'bool kleir'. Но он не войдет в блок 'catch', он останется в блоке' try':/ – DeMama
Какое сообщение об ошибке исключения? Добавьте Console.WriteLine (ex.Message) перед коммутатором – Steve