【发布时间】:2014-07-27 17:55:15
【问题描述】:
我遇到了一个问题,即 try/catch 块没有捕获到异常。该问题发生在 command.ExecuteReader(),但它永远不会被捕获。我正在调试模式下运行,并且已经尝试了一些关于调试器设置的建议选项,但均无济于事。
我想提一下,我使用 SQLite 作为我的提供程序,我可以看到它抛出了 SQLiteException,但是问题仍然存在。是否存在未捕获异常的任何特定情况? (除了 StackOverflowException、ThreadAbortedException 等...)
public IEnumerable<dynamic> Query(string sql, params object[] parms)
{
try
{
return QueryCore(sql, parms);
}
catch (Exception ex)
{
throw new DbException(sql, parms, ex);
}
}
private IEnumerable<dynamic> QueryCore(string sql, params object[] parms)
{
using (var connection = CreateConnection())
{
using (var command = CreateCommand(sql, connection, parms))
{
using (var reader = command.ExecuteReader())
{
while (reader.Read())
{
yield return reader.ToExpando();
}
}
}
}
}
我还想补充一点,如果我对数据库生成正确的查询,我会返回结果,但是当我中断查询时,会抛出异常,但不会被捕获。
【问题讨论】:
-
当你从 catch 子句中删除参数时会发生什么?
-
在 64 位机器上的 Form.Load 事件期间。
标签: c# sqlite exception-handling