java-Throwable——面題
Throwable類
Java 異常類層次結構圖概覽 :

Exception 和 Error 有什么區別?
Exception 和 Error是java.lang 包Throwable(異常類)重要的子類
區別:
Exception:
程序本身可以處理的異常,可以通過 catch 來進行捕獲處理
Exception 又可以分為 Checked Exception (受檢查異常,必須處理) 和 Unchecked Exception (不受檢查異常,可以不處理)。
Error :Error 屬于程序無法處理的錯誤 ,我們沒辦法通過 catch 來進行捕獲不建議通過catch捕獲 。例如 Java 虛擬機運行錯誤(Virtual MachineError)、虛擬機內存不夠錯誤(OutOfMemoryError)、類定義錯誤(NoClassDefFoundError)等 。這些異常發生時,Java 虛擬機(JVM)一般會選擇線程終止。
Checked Exception(受檢查異常,必須處理) 和 Unchecked Exception(不受檢查異常,可以不處理) 有什么區別?
Checked Exception 即 受檢查異常 ,Java 代碼在編譯過程中,如果受檢查異常沒有被 catch或者throws 關鍵字處理的話,就沒辦法通過編譯。
比如進行IO操作流時可能需要處理
Unchecked Exception 即 不受檢查異常 ,Java 代碼在編譯過程中 ,我們即使不處理不受檢查異常也可以正常通過編譯。
RuntimeException 及其子類都統稱為非受檢查異常
常見的有(建議記下來,日常開發中會經常用到)
NullPointerException(空指針錯誤)
IllegalArgumentException(參數錯誤比如方法入參類型錯誤)
NumberFormatException(字符串轉換為數字格式錯誤,IllegalArgumentException的子類)
ArrayIndexOutOfBoundsException(數組越界錯誤)
ClassCastException(類型轉換錯誤)
ArithmeticException(算術錯誤)
SecurityException (安全錯誤比如權限不夠)
UnsupportedOperationException(不支持的操作錯誤比如重復創建同一用戶)
......
Throwable 類常用方法有哪些?
String getMessage(): 返回異常發生時的簡要描述
String toString(): 返回異常發生時的詳細信息
String getLocalizedMessage(): 返回異常對象的本地化信息。使用 Throwable 的子類覆蓋這個方法,可以生成本地化信息。如果子類沒有覆蓋該方法,則該方法返回的信息與 getMessage()返回的結果相同
void printStackTrace(): 在控制臺上打印 Throwable 對象封裝的異常信息
try-catch-finally 如何使用?
try塊 :用于捕獲異常。其后可接零個或多個 catch 塊,如果沒有 catch 塊,則必須跟一個 finally 塊。
catch塊 :用于處理 try 捕獲到的異常。
finally 塊 :無論是否捕獲或處理異常,finally 塊里的語句都會被執行。當在 try 塊或 catch 塊中遇到 return 語句時,finally 語句塊將在方法返回之前被執行。
finally 中的代碼一定會執行嗎?
不一定 finally 之前虛擬機被終止運行的話,finally 中的代碼就不會被執行。
程序所在的線程死亡。
關閉 CPU。
浙公網安備 33010602011771號