我有一个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
答案 0 :(得分:6)
听起来你所看到的不是SqlException
。
SqlProc
本身可能正在捕捉SqlExceptions
,从中提取一些信息,然后抛出不同类型的新异常(在新异常的消息中嵌入一些原始信息)。
答案 1 :(得分:0)
看起来它可能是连接超时,而不是命令超时。
我会检查以确保您可以使用更合理的超时值连接并运行查询,以验证这一点。