我有一些德尔福代码,有点像这样:
try
//some code
//occasionally throws an exception here, for example an EIndexOutOfRangeException
//more code...should get skipped if exception is thrown
finally
// there may or may not be any important cleanup code here
end;
在这种情况下,除了打破 try 块之外,不需要处理的异常。因此,在将 mad-except 添加到项目以进行错误故障排除之前,此代码是“工作”的。但是现在我收到了错误报告,因为 MadExcept 正在报告未捕获的异常。
相关问题,MadExcept 在 try 上触发最终表明 MadExcept 在这种情况下中断的行为是“预期的”,因为该异常没有“处理”。
我想澄清一下我的选项是什么,以防止在此代码运行时弹出疯狂的异常对话框,无论是否有内部异常被抛出和忽略。
所以我认为没有开关来禁用 MadExcept 以阻止在 try/finally 块中的未处理异常是正确的?即使我想忽略它,我也需要明确地“捕捉”异常?
我应该做这样的事情(忽略任何例外):
try
//some code
//sometimes throws EIndexOutOfRangeException here
//more code...should get skipped if exception is thrown
except do begin end;
end;
或者也许(忽略一个非常具体的例外):
try
//some code
//sometimes throws EIndexOutOfRangeException here
//more code...should get skipped if exception is thrown
except on E : EIndexOutOfRangeException do begin end;
end;
或者可能需要:
try
try
//some code
//sometimes throws EIndexOutOfRangeException here
//more code...should get skipped if exception is thrown
except on E : EIndexOutOfRangeException do begin end;
finally
// some cleanup code
end;
如果所有这三个都是有效的解决方案,我是否应该出于任何原因更喜欢其中一个?