1. 程式人生 > >鳥哥Java學習之異常-面向物件

鳥哥Java學習之異常-面向物件

處理異常機制 ===========================         在 Java 應用程式中,異常處理機制為:丟擲異常,捕捉異常。         丟擲異常:當一個方法出現錯誤引發異常時,方法建立異常物件並交付執行時系統,異常物件中包含了異常型別和異常出現時的程式狀態等異常資訊。執行時系統負責尋找處置異常的程式碼並執行。         捕獲異常:在方法丟擲異常之後,執行時系統將轉為尋找合適的異常處理器(exception handler)。潛在的異常處理器是異常發生時依次存留在呼叫棧中的方法的集合。當異常處理器所能處理的異常型別與方法丟擲的異常型別相符時,即為合適 的異常處理器。執行時系統從發生異常的方法開始,依次回查呼叫棧中的方法,直至找到含有合適異常處理器的方法並執行。當執行時系統遍歷呼叫棧而未找到合適  的異常處理器,則執行時系統終止。同時,意味著Java程式的終止。 對於執行時異常、錯誤或可查異常,Java技術所要求的異常處理方式有所不同。         由於執行時異常的不可查性,為了更合理、更容易地實現應用程式,Java規定,執行時異常將由Java執行時系統自動丟擲,允許應用程式忽略執行時異常
。        對於方法執行中可能出現的Error,當執行方法不欲捕捉時,Java允許該方法不做任何丟擲宣告。因為,大多數Error異常屬於永遠不能被允許發生的狀況,也屬於合理的應用程式不該捕捉的異常。        對於所有的可查異常,Java規定:一個方法必須捕捉,或者宣告丟擲方法之外。也就是說,當一個方法選擇不捕捉可查異常時,它必須宣告將丟擲異常。         能夠捕捉異常的方法,需要提供相符型別的異常處理器。所捕捉的異常,可能是由於自身語句所引發並丟擲的異常,也可能是由某個呼叫的方法或者Java執行時 系統等丟擲的異常。也就是說,一個方法所能捕捉的異常,一定是Java程式碼在某處所丟擲的異常。簡單地說,異常總是先被丟擲,後被捕捉的。          任何Java程式碼都可以丟擲異常,如:自己編寫的程式碼、來自Java開發環境包中程式碼,或者Java執行時系統。無論是誰,都可以通過Java的throw語句丟擲異常。         從方法中丟擲的任何異常都必須使用throws子句。
        捕捉異常通過try-catch語句或者try-catch-finally語句實現。          總體來說,Java規定:對於可查異常必須捕捉、或者宣告丟擲。允許忽略不可查的RuntimeException和Error。