热门问题
时间线
聊天
视角
例外處理
局势计算机编程 来自维基百科,自由的百科全书
Remove ads
在計算和電腦編程領域中,例外處理(英語:exception handling,也意譯為異常處理),指的是在程式執行期間,對出現的例外或異常情況的回應處理機制。一般而言,例外打斷正常的執行流程並執行預先登記的「例外處理器」,具體處理措施依賴於它是硬體還是軟體例外,還有軟體例外是如何實現的。
例外是由電腦系統的不同層級來定義的,典型的層級有CPU定義的中斷、作業系統(OS)定義的訊號和程式語言定義的例外。每個層級都要求不同例外處理方式,但是它們可以是關聯的,比如說CPU中斷可能被轉變成OS訊號。一些例外(特別是硬體例外)可以被優雅地處理,使得程式執行能在它被中斷的地方恢復。
硬體的例外處理
硬體的例外處理機制由CPU完成。這種機制支援錯誤檢測,在發生錯誤後會將程式流跳轉到專門的錯誤處理常式中。發生例外前的狀態儲存在棧上。[1]
作業系統的例外處理
針對程式中可能發生的例外,作業系統可能通過IPC來提供對應的處理設施。行程執行過程中發生的中斷通常由操作提供的「中斷服務子程式」處理,作業系統可以藉此向該行程傳送訊號。行程可以通過註冊訊號處理器的方式自行處理訊號,也可以讓作業系統執行預設行為(比如終止該程式)。
從行程的視角,硬體中斷相當於可恢復例外,雖然中斷一般與程式流本身無關。
程式語言的例外處理
在程式語言領域,通常例外(英語:exception)這一術語所描述的是一種資料結構,該資料結構可以儲存例外的相關訊息。例外處理的常見的一種機制是移交控制權。引發(raise)例外,也叫作丟擲(throw)例外,通過該方式達到移交控制權的效果。例外丟擲後,控制權會被移交至某處的接住(catch),並執行處理。
參照
外部連結
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads