我无法在C#中捕获登录SqlException
。
这是我的代码:
using (SqlConnection connection = new SqlConnection(connectionString))
{
try
{
connection.Open();
}
catch (SqlException)
{ }
}
它甚至没有像这样工作:
catch (Exception) { }
这应该捕获所有异常,但事实并非如此。总是SqlExceptions
被抛出。这就是它所说的:
SQLEXCEPTION:
中
类型' System.Data.SqlClient.SqlException'的第一次机会异常发生在System.Data.dll附加信息:无法打开数据库" foo"登录请求。登录失败。
我从数据库中读取时使用完全相同的try / catch(捕获TimeOut)并且它完全正常。还尝试了this question的一些变种,但到目前为止还没有运气。
规范:Visual Studio 2013 Prem v12.0,.NET 4.5,Win8.1
答案 0 :(得分:1)
您的调试器设置为在所有异常(或至少CLR异常)上中断。如果继续执行,您将点击catch
阻止。
我通常使用该设置开发代码(中断所有CLR异常),因为它在开发周期的早期就会出现问题。我不会改变那个设置。
虽然您不应该使用Exceptions进行流控制,但如果遇到代码经常抛出您在开发期间优雅处理的异常的问题,您可以使用DebuggerStepthrough属性来防止调试器破坏在那个特定的方法。