尝试 - 终于嵌套在 try-except 中
try-finally 区块可以嵌套在 try-except 区块内。
try
AcquireResources;
try
UseResource;
finally
ReleaseResource;
end;
except
on E: EResourceUsageError do begin
HandleResourceErrors;
end;
end;
如果在 UseResource 内发生异常,则执行将跳转到 ReleaseResource。如果异常是 EResourceUsageError,则执行将跳转到异常处理程序并调用 HandleResourceErrors。任何其他类型的例外将跳过上面的异常处理程序并冒泡到下一个 try-except 阻塞调用堆栈。
在 AcquireResource 或 ReleaseResource 异常会导致执行去异常处理程序,跳过 finally 块,或者是因为相应的 try 块尚未进入或因为 finally 块也已经被输入。