try-catch没有捕获ExecuteNonQuery()异常

时间:2014-12-09 16:05:55

标签: c# exception try-catch sybase access-violation

我遇到一个数据库调用问题,当我调用AccessViolationException时会抛出ExecuteNonQuery()。该调用包含在try-catch块中,但异常永远不会被捕获。相反,我在Windows事件日志中得到一个关于它的条目。有没有办法在代码中捕获此异常?

IDbCommand cmd = ...
cmd.CommandText = "...";
try
{
    var results = command.ExecuteNonQuery();
}
catch (Exception ex)
{
    Console.Writeline("Caught exception: " + ex.Message);
}

1 个答案:

答案 0 :(得分:7)

如果底层驱动程序在纯模式下崩溃,

ExecuteNonQuery()可以抛出AccessViolationException。从.NET Framework 4开始,托管代码不再捕获catch块中的这些类型的异常。您可以阅读有关此here的更多信息。

解决方案是在App.config中将<legacyCorruptedStateExceptionsPolicy> element启用属性设置为 true ,或者应用{ {1}} attribute到包含try-catch块的方法。