无法捕获失败的Logon SqlException C#

时间:2015-07-22 19:00:37

标签: c#

我无法在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

1 个答案:

答案 0 :(得分:1)

您的调试器设置为在所有异常(或至少CLR异常)上中断。如果继续执行,您将点击catch阻止。

我通常使用该设置开发代码(中断所有CLR异常),因为它在开发周期的早期就会出现问题。我不会改变那个设置。

虽然您不应该使用Exceptions进行流控制,但如果遇到代码经常抛出您在开发期间优雅处理的异常的问题,您可以使用DebuggerStepthrough属性来防止调试器破坏在那个特定的方法。