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

本文关键字:错误 catch try | 更新日期: 2023-09-27 18:21:23

我的应用程序中有一些代码每隔一段时间就会抛出一个错误(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
        }

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

可能有几个选项:

  • 或CCD_ 1;没有按预期工作

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

不能跳过或捕获访问违规异常。

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