Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SqlException未被捕获_C#_Asp.net_Sql Server - Fatal编程技术网

C# SqlException未被捕获

C# SqlException未被捕获,c#,asp.net,sql-server,C#,Asp.net,Sql Server,我有一个ASP.Net应用程序,其代码如下: 请注意这一行: sql.Command.CommandTimeout=1 这会导致抛出SqlException(用于测试) 我本以为catch块会捕获这个异常,但它没有。相反,我得到: 超时已过期。操作完成前已过超时时间,或者服务器没有响应 [SqlException(0x80131904):超时已过期。操作完成前已过超时时间,或者服务器未响应。] 为什么它抓不住它??我用错类型了吗?我错过了什么 提前谢谢 -Ev听起来你看到的不是SqlExcept

我有一个ASP.Net应用程序,其代码如下:

请注意这一行:

sql.Command.CommandTimeout=1

这会导致抛出SqlException(用于测试)

我本以为catch块会捕获这个异常,但它没有。相反,我得到:

超时已过期。操作完成前已过超时时间,或者服务器没有响应

[SqlException(0x80131904):超时已过期。操作完成前已过超时时间,或者服务器未响应。]

为什么它抓不住它??我用错类型了吗?我错过了什么

提前谢谢


-Ev

听起来你看到的不是
SqlException


可能是
SqlProc
本身正在捕获
SqlExceptions
,从中提取一些信息,然后抛出不同类型的新异常(在新异常的消息中嵌入一些原始信息)。

看起来可能是连接超时,而不是命令超时


为了验证这一点,我会检查以确保您可以使用更合理的超时值连接并运行查询

请发布您的真实代码,上面的代码无法编译,如果没有准确的代码,我们无法准确评估正在进行的操作。控制台的输出是什么。WriteLine(例如GetType().Name)?感谢您的快速回复!尽管我认为情况并非如此,因为抛出到浏览器的异常是:Exception Details:System.Data.SqlClient.SqlException:Timeout expired。操作完成之前的超时时间或服务器没有响应。因此,我认为这意味着异常类型为System.Data.SqlClient.SqlException,这正是我试图捕获的。对吗?不,我站在正确的立场上。SqlException被一个ApplicationException包装(出于某种原因):抛出新的ApplicationException(string.Format(“执行时出现意外错误:{0}”,GetProcDebugString(cmd)),ex);你是对的,是SqlProc做的。问题仍然是,为什么屏幕上的异常会说它是SqlExection类型的异常,而实际上它是ApplicationException?@Ev-不客气!这说明了为什么在库代码(比如
SqlProc
类)中捕获
异常很少是一个好主意,而不能对它们做任何有用的事情。
    try
    {
        sql = new SqlProc("prcCustomerAgeSelect",
            SqlProc.InParam("@DateFrom", SqlDbType.DateTime, 8, _OrderDateFrom),
            SqlProc.InParam("@DateTo", SqlDbType.DateTime, 8, _OrderDateTo),
        sql.Command.CommandTimeout = 1;
        dt = sql.ExecuteTable();

    }
    catch (SqlException ex)
    {
        Filter.ErrorMessage = "Please narrow your search criteria.";
    }