嘗試 - 終於巢狀在 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 塊也已經被輸入。