try / catch块可以防止发生错误吗?

时间:2013-07-08 10:49:52

标签: c# .net try-catch

我的应用程序中有一些代码经常抛出错误(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
        }

2 个答案:

答案 0 :(得分:1)

可能有几种选择:

  • MainForm.LogExceptionToFile(ex);不能按预期工作

  • 或者,如果我们100%确定该方法,可能注入try/catch块在代码流中引入了微观延迟(由于执行的IL代码越多/控制),这是那台机器上<{1}}的必要条件。这意味着,在其他计算机上获得该异常绝对是可能的。

答案 1 :(得分:0)

无法跳过或捕获AccessViolation异常。

每次发生此异常时都会被抛出!