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
}
可能有几个选项:
-
或CCD_ 1;没有按预期工作
-
或者,如果我们在该方法中100%确定,可能注入
try/catch
块在代码流中引入了微观延迟(由于执行/控制的IL代码越多),这对于不在该机器上获得AccessViolationException
是必要的。这意味着,您将在其他机器上获得该异常是绝对可能的。
不能跳过或捕获访问违规异常。
每次发生此异常时,都会抛出它!