SqlException not being caught

本文关键字:caught being not SqlException | 更新日期: 2023-09-27 18:00:39

我有一个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

SqlException not being caught

听起来你看到的不是SqlException

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

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

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