1. 程式人生 > >菜鳥先飛之jAVA_異常

菜鳥先飛之jAVA_異常

異常的概述 異常就是Java程式在執行過程中出現的錯誤。
異常的分類 Throwable 類是 Java 語言中所有錯誤或異常的超類。只有當物件是此類(或其子類之一)的例項時,才能通過 Java 虛擬機器或者 Java throw 語句丟擲。兩個子類的例項,Error 和 Exception,通常用於指示發生了異常情況。Error一般是伺服器宕機,資料庫崩潰等情況。
JVM預設處理異常的方式 main函式收到這個問題時,有兩種處理方式: 1)自己將該問題處理,然後繼續執行。
2)自己沒有針對的處理方式,只有交給呼叫main的jvm來處理。jvm有一個預設的異常處理機制,就將該異常進行處理。並將該異常的名稱,異常的資訊。異常出現的位置列印在了控制檯上,同時將程式停止執行。
編譯期異常和執行期異常的區別 Java中的異常被分為兩大類:編譯時異常和執行時異常。所有的RuntimeException類及其子類的例項被稱為執行時異常,其他的異常就是編譯時異常。 1、編譯時異常:Java程式必須顯示處理,否則程式就會發生錯誤,無法通過編譯。 2、執行時異常:無需顯示處理,也可以和編譯時異常一樣處理。

異常處理的兩種方式 1、try…catch...方式處理異常 格式: a)try catch b)try catch finally 基本格式 c)try finally 其中,try是用來檢測異常的,catch是用來捕獲異常的,finally是釋放資源。當通過try..catch將問題處理了,程式會繼續執行。 注意事項: try後面如果跟多個catch,那麼小的異常放前面,大的異常放後面,根據多型的原理,如果大的放前面,就會將所有的子類物件接收後面的catch就沒有意義了。
2、throws的方式處理異常 定義功能方法時,需要把出現的問題暴露出來讓呼叫者去處理。那麼就通過throws在方法上標識。編譯時異常的丟擲必須對其進行處理,執行時異常的丟擲可以處理也可以不處理。
Throwable的幾個常見方法 1)public String getMessage() 返回此 throwable 的詳細訊息字串,就是獲取異常資訊。 2)public String toString() 返回此 throwable 的簡短描述,就是獲取異常類名和異常資訊。 3)public void printStackTrace()將此 throwable 及其追蹤輸出至標準錯誤流。就是獲取異常類名和異常資訊,以及異常出現在程式中的位置。
finally關鍵字的特點及作用 1、finally的特點 被finally控制的語句體一定會執行,特殊情況:在執行到finally之前jvm退出了(比如System.exit(0))。 2、finally的作用 用於釋放資源,在IO流操作和資料庫操作中會見到 3、final、finally和finalize的區別 a)final修飾類,不能被繼承;final修飾方法,不能被重寫;final修飾變數,只能賦值一次。 b)finally是try語句中的一個語句體,不能單獨使用,用來釋放資源。 c)finalize是一個方法,當垃圾回收器確定不存在對該物件的更多引用時,由物件的垃圾回收器呼叫此方法。
throws和throw的區別 1、throws用在方法聲明後面,跟的是異常類名;可以跟多個異常類名,用逗號隔開;表示丟擲異常,由該方法的呼叫者來處理。 2、throw用在方法體內,跟的是異常物件名;只能丟擲一個異常物件名;表示丟擲異常,由方法體內的語句處理。
異常的注意事項及使用 1、異常注意事項 a)子類重寫父類方法時,子類的方法必須丟擲相同的異常或父類異常的子類。(父親壞了,兒子不能比父親更壞) b)如果父類丟擲了多個異常,子類重寫父類時,只能丟擲相同的異常或者是他的子集,子類不能丟擲父類沒有的異常。 c)如果被重寫的方法沒有異常丟擲,那麼子類的方法絕對不可以丟擲異常,如果子類方法內有異常發生,那麼子類只能try,不能throws。 2、如何使用異常處理 原則:如果該功能內部可以將問題處理,用try...catch;如果處理不了,交由呼叫者處理,這是用throws 區別:後續程式需要繼續執行就try,後續程式不需要繼續執行就throws 3、如果JDK沒有提供對應的異常,需要自定義異常,繼承自Exception或者繼承自RuntimeException。