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
。
SqlProc
本身可能正在捕获SqlExceptions
,从中提取一些信息,然后抛出不同类型的新异常(将一些原始信息嵌入新异常的消息中)。
看起来可能是连接超时,而不是命令超时。
我会检查以确保您可以使用更合理的超时值来连接和运行查询,只是为了验证这一点。