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