【发布时间】:2017-11-09 04:34:09
【问题描述】:
我继承了一个庞大的代码库,其中充满了这样的结构:
try
DoWhatever;
finally
end;
有时“DoWhatever”涉及到一些控件的摆弄,而且通常是对数据库的发布,并且代码中有很多情况在 finally 块中存在某些东西。
但我的理解是,如果 finally 块中没有任何内容,那么整个 try...finally 事情就毫无意义。该代码总体上非常嘈杂,所以我假设它只是未来代码的占位符或以前代码的保留。 (代码中有很多占位符。)
我的理解是正确的还是在 Delphi 中是否有一些秘密的双重诈唬尝试……最后我忽略了块? (这是 Delphi 2010。)
【问题讨论】:
-
不,空的
finally部分没有用处(应该删除try..finally块)。 -
感谢您的完整性检查。非常感谢。
-
不客气 :) 当然,
try..finally块只有在finally部分中有要执行的东西(如果它是空的)才有意义(我什至相信编译器会抛出这样的在这种情况下挡住了,但这是我现在无法验证的)。 -
可能代码的作者不懂try finally。我会更关心最终部分非空的块。我想知道那里发生了什么滑稽的事情。
-
作者添加它可能是为了能够在调用失败后设置断点并检查局部变量。我通常会在 finally 块中添加“asm nop end;”,因为我不记得在哪里放置断点。
标签: delphi exception-handling delphi-2010 try-finally