跳轉到內容

鸚鵡虛擬機器/異常子系統

來自華夏公益教科書

異常處理已成為大多數現代程式語言中的基本功能。鸚鵡,因為它旨在託管許多這樣的語言,必須支援一個強大的異常系統。鸚鵡不僅使用異常進行錯誤處理和恢復,而且還鼓勵使用控制流異常來實現這些語言的高階控制流功能。這意味著異常子系統是語言實現者必須熟悉的最重要的子系統之一。

異常:基礎知識

[編輯 | 編輯原始碼]

異常被分解為兩個主要部分:異常物件和異常處理程式。異常處理程式在許多方面類似於子例程,必須在使用前專門在鸚鵡中註冊。當鸚鵡檢測到錯誤時,它會透過包含有關錯誤的資訊、當前控制流狀態的延續以及其他一些資訊來建立一個異常物件。異常,就像鸚鵡中的大多數其他東西一樣,是 PMC,可以像其他 PMC 一樣儲存、操作和使用。

建立異常物件後,鸚鵡會檢視其處理程式列表,並將異常物件傳遞給每個處理程式。處理程式儲存在類似於堆疊的結構中,最近註冊的處理程式將首先訪問異常物件。處理程式可以執行以下幾種操作之一。首先,它可以處理異常:它可以修復錯誤,呼叫異常物件中的返回延續,並將控制流返回到發生錯誤之前的狀態。其次,它可以重新丟擲異常,將其傳遞給堆疊中的下一個處理程式。第三,它可以忽略異常。被忽略或沒有可用的處理程式的異常會導致鸚鵡退出。

註冊異常處理程式

[編輯 | 編輯原始碼]

處理異常

[編輯 | 編輯原始碼]

重新丟擲異常

[編輯 | 編輯原始碼]
華夏公益教科書