天天看點

java的異常處理機制

異常,又稱例外,是指程式運作過程中出現的非正常現象。例如:使用者輸入錯誤、除數為零、需要處理的檔案不存在、數組下标越界等。由于異常情況總是不可避免的,良好的應用程式除了具備使用者所需求的基本功能外,還應具有預見并處理可能發生的各種異常的功能。引入了異常處理。

用面向對象的方法處理異常,就必須建立類的層次。在Java中,Throwable是所有可以通過throw抛出或catch捕獲錯誤的基類。Throwable 對象有兩個直接子類對象:Error類和Exception類。Error類用來表示編譯錯誤和系統錯誤,如虛拟機錯誤、裝載錯誤、動态連結錯誤,這類異常主要與硬體、運作系統有關,與程式本身無關,是以不需要捕獲,特殊情況例外。Exception類用來表示可以被抛出異常的基類和使用者自定義異常類。

所有的異常都由Throwable或者其子類的一個對象來表示,這種對象可用于把資訊從常發生點傳遞到捕獲點得處理程式中。異常句柄由try語句塊中得catch子句建立。在處理異常的過程中,Java VM把目前線程中已開始運作但尚未結束的表達式、語句、方法、構造方法調用、靜态初始化或域初始化表達式連續終止掉。這個過程一直繼續下去,直到發現了一個異常句柄,該句柄通過指定異常的類或異常類的超類來聲明它能處理該異常。如果未發現這樣的句柄,就調用目前線程的父線程ThreadGroup的方法uncaught Exception,進而盡可能避免異常逃過處理。

異常處理的原則:Java異常處理結構由try,catch,finally三個塊組成。其中try塊存放将可能發生異常的Java代碼,并管理相關的異常指針;catch塊緊跟在try塊後面,用來激發被捕獲的異常;finally塊包含清除程式沒有釋放的資源,句柄等。不管try塊中的代碼如何退出,多将執行finally塊

本文轉自 jasonteststudy 51CTO部落格,原文連結:http://blog.51cto.com/jasonteststudy/1183327