java異常處理目的在于通過使用少于目前數(shù)量的代碼來簡化大型、可靠的程序的生成。Java中Throwable類是所有異?;蝈e誤的超類,它的兩個子類Error表示編譯時和系統(tǒng)錯誤,Exception表示可以被拋出和處理的異常。一般來說我們只關(guān)心Exception類,它的子類可以分為兩類:
- 一般異常(
checkedException)
主要指SQL、IO異常,對于這種異常JVM會強(qiáng)制我們對其進(jìn)行catch處理。
- 運(yùn)行時異常(
runtimeException)
這類異常JVM會自動地拋出來,不需要我們手動去檢查,如果寫了代碼反而會混亂。
處理異??梢允褂?code>try...catch語句,try用來指定可能會發(fā)生異常的程序代碼,catch用來捕獲異常,如果發(fā)生了異常,那么后面的代碼將不會執(zhí)行,但假設(shè)存在finally,不管發(fā)生沒發(fā)生異常,finally代碼塊都會被執(zhí)行(注意:如果在try語句前有返回點(diǎn),則finally代碼塊不會被執(zhí)行;在try塊或catch塊中有System.exit(0)這種語句,finally也不會執(zhí)行,因為JVM都被停止運(yùn)行了。)。如果try...catch中有return,它不會影響finally,在執(zhí)行return的時候只是把return后面的值復(fù)制一份到返回變量中??梢允褂?code>throw明確拋出一個異常,throws用來表明一個方法可能拋出的各種異常。
java中可以使用assert(斷言)進(jìn)行開發(fā)的調(diào)試,assert后面跟一個布爾值的表達(dá)式,如果為false說明程序已經(jīng)錯誤了,會拋出一個AssertionException,如果assert后面有“:”和表達(dá)式,則表示當(dāng)條件為假時,將表達(dá)式的值傳入到AssertionException的構(gòu)造函數(shù)中。