我的应用程序中有一些代码经常抛出错误(System.AccessViolationException) - 所以我将它包装在try / catch块中,并在catch元素中设置调试点和日志记录方法。我发现,因为我这样做了错误已经停止发生 - 调试点永远不会被击中,也没有记录任何内容。一旦我从代码中删除了try,我就会再次收到错误。可能导致这种情况的原因是什么?
代码非常简单:
try
{
var f1 = new ResizeNearestNeighbor(lfu.Width, lfu.Height);
var f2 = new Crop(ViewRectangle);
lfu = f2.Apply(lfu);
lfu = f1.Apply(lfu);
}
catch (Exception ex)
{
MainForm.LogExceptionToFile(ex);//never hit
}
答案 0 :(得分:1)
可能有几种选择:
或MainForm.LogExceptionToFile(ex)
;不能按预期工作
或者,如果我们100%确定该方法,可能注入try/catch
块在代码流中引入了微观延迟(由于执行的IL代码越多/控制),这是那台机器上<{1}}的必要条件。这意味着,将在其他计算机上获得该异常绝对是可能的。
答案 1 :(得分:0)
无法跳过或捕获AccessViolation异常。
每次发生此异常时都会被抛出!