我在一个应用程序中有一个奇怪的症状,其中 UnhandledExceptions 处理程序中的 try/catches 不起作用:(即 catch
中的断点不会被击中,即使try
中的断点)。
显然,搜索“UnhandledException 中未处理的异常”对我来说效果不是很好。
我已经尝试过进行小型概念验证,不幸的是,它成功了。
因此,当我试图追查问题的根源时,如果这里有人有任何想法,我将不胜感激。
(我们最近从 XP 更改为 Windows7,并从 4.0 更改为 .Net 4.5 - 我很确定以前这行得通)。
编辑:看起来它是由对抛出 System.AccessViolationException
的(托管)C++ 库的调用引发的。奇怪的是,如果我用 throw new AccessViolationException
替换调用,它确实会执行我想要的...
最佳答案
您写道,“我们最近将 .Net 4.5 从 4.0 更改为 .Net 4.5 - 我很确定以前这行得通。”但以下内容似乎值得添加,因为非常确定实际上意味着不确定 :-)
我在某处读到 AccessViolationException
不能出现在托管代码中,但可能会被非托管代码的运行时捕获。也许 C++ 库会调用非托管代码?
在 .NET 4+ 中,进程将在 AccessViolationException
之后终止。您的异常处理程序将被忽略。这是一组被认为不可恢复的异常类型之一:Corrupted State Exceptions .在 .NET 4+ 中,您需要自定义应用程序配置以覆盖此行为。
关于c# - try/catch 在 UnhandledException 处理程序中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20117946/