我知道这听起来像是一个老掉牙的问题,但我在互联网上搜索了很久,仍然不明白一件事。我知道try-finally将在停止错误之前运行最终代码(或者在没有引发异常时不会停止),而try-except将在引发异常时运行except代码。但我仍然不明白try-finally语句中try-except的意义。我会写一个例子
我通常做的是这样的:
我通常做的是这样的:
a:=x.Create;
try
a.DoRiskyStuff;
except
ShowMessage('Error!');
end;
a.free;
我从未使用过finally子句,因为我总是处理错误,并且我从来没有理解过使用它们嵌套在一起的意义。那么我的解决方案有什么问题?为什么在示例中通常使用这样的代码:
a:=x.Create;
try
try
a.DoRiskyStuff;
except
ShowMessage('Error!');
end;
finally
a.free;
end;
有什么区别?为什么有些人要在try-except之后使用finally子句来做所有的清理工作呢?
非常感谢您的任何回答!
编辑:我改变了创建行,所以有些人可能会批评我;)
try-except-finally
结构。 - MBotry...finally
语句中嵌套try...except
语句? - Free Consulting