C# try/catch块能否防止错误发生?
我的应用程序中有一些代码每隔一段时间就会抛出一个错误(System.AccessViolationException)——因此我将其包装在一个try/catch块中,并在catch元素中设置调试点和日志记录方法。我发现,自从我这么做之后,错误已经停止发生了——调试点从未命中,也没有记录任何内容。一旦我从代码中删除try,我就会再次得到错误。这可能是什么原因造成的 代码非常简单:C# try/catch块能否防止错误发生?,c#,.net,try-catch,C#,.net,Try Catch,我的应用程序中有一些代码每隔一段时间就会抛出一个错误(System.AccessViolationException)——因此我将其包装在一个try/catch块中,并在catch元素中设置调试点和日志记录方法。我发现,自从我这么做之后,错误已经停止发生了——调试点从未命中,也没有记录任何内容。一旦我从代码中删除try,我就会再次得到错误。这可能是什么原因造成的 代码非常简单: try { var f1 = new ResizeNearestNeighb
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
}
无法跳过或捕获AccessViolation异常
每次发生此异常时,都会抛出它 可能有两种选择:
- 或者
;没有按预期的那样工作MainForm.logexceptionfile(ex)
- 或者,如果我们对该方法有100%的把握,可能是注入
块在代码流中引入了微延迟(由于要执行/控制的IL代码更多),这是在该机器上不获取try/catch
所必需的。也就是说,你完全有可能在其他机器上得到这个异常AccessViolationException