VMS作業系統設計了一個異常分派程式(the exception dispatcher),這個程式負責調用幀的棧異常處理掃描。
基本介紹
- 中文名:異常分派程式
- 外文名:the exception dispatcher
- 作業系統:VMS
- 定義:負責調用幀的棧異常處理掃描
- 套用:處理異常
- 套用學科:計算機原理
概述,表達式,
概述
第一步,首先掃描了主異常向量(primary exception vector),它是在異常發生時正在執行的程式訪鑽蘭問模式的條件下進行的。
第二步,掃描次異常向量(secondary exception vector),它是在異常發生時正在執行的程式訪問模式的條件下進行的。
第三步,掃描異常發生時正在執行程式訪問模式匙永鑽的過程調用棧中所指示的異常處理程式的地址,在調用棧中的掃描根據調用幀中的FP指示的方向進行。
第四步,掃描壓軸異常向量(the last chance exception vector),它是在異常發生時正在執行程式的訪問模漏民判籃式的條件下進行的。
當異常分派程式找到一個條件處理程式時便終止。如果分派程式沒有找到User Handler,它將調用在壓軸異常向量中存放地址指向的條件處理程式(往往是“垃圾箱處理程式”)。從這個過程中看出:如果用寒驗市擊戶指定異常處理,它將設定在比預設異常處理優先找到的位置。
表達式
編程人員可以進行選擇,如果異常發生在try模組中,異挨宙多常過濾程式就被求值,異常過濾程式是一個結果必須為下列三個選項之一的表達式:
1、過濾程式取值為1(EXCEPTION-EXECUTE-HANDLER),則“接受”異常。從而指示分派程式調用異常處理程式。過濾程式取值為1,除了傳入EXCEPTl0N—EXECUTE-HANDLER以外,還可以有別的方法。例如GetExceptionCode函式提取引起except模組執行的異常。
2、取消異常,如果過濾程式取值為一1(EXCEPTION—CONTINUE-EXECUTION),這意汗抹踏味著,編程人員已經對異常發生的原因有所處理。在這種情況下,異常分派程式從上下文記錄中恢復機器狀態,並由引發異常處開始執行代碼。
3、才戶付0值(EXCEPTION—CONTINUE SEARCH)意味著編程人員不希望處理異常。在這種情況下,異常分派程式搜尋另一個處理程式來處理異常。這是對的,編程人員可以有一個以上的異常處理程式,如果不處理異常,異常分派程式通過逆向搜尋調用堆疊查找另一個異常處理程式。如果異常分派程式沒有找到一個願意取值為EXCEPTION—EXECUTEHANDLER的處理程式,它將被認為是未處理的異常。