尝试 - 终于嵌套在 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
块也已经被输入。