SqlException未被捕获

时间:2011-06-30 02:21:51

标签: c# asp.net sql-server

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

    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.";
    }

注意这一行:

  

sql.Command.CommandTimeout = 1;

导致抛出SqlException(用于测试)。

我原以为catch块会捕获这个异常,但事实并非如此。相反,我得到:

  

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

     

[SqlException(0x80131904):超时已过期。操作完成之前经过的超时时间或服务器没有响应。]

为什么不抓住它?我使用的是错误的类型吗?我在这里缺少什么?

提前致谢!!

-ev

2 个答案:

答案 0 :(得分:6)

听起来你所看到的不是SqlException

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

答案 1 :(得分:0)

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

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