當前位置:首頁>職場>java面試知識點整理(一個面試必問的知識點)
發布時間:2024-01-24閱讀(22)
java的異常是一個面試高頻問題,而且在學習java的時候也是一個基礎而且重要的問題。這篇文章結合著面試問題對java的異常體系進行一個梳理。
1、體系梳理
Throwable 可以用來表示任何可以作為異常拋出的類,分為兩種: Error 和 exception。其中 Error 用來表示 jvm 無法處理的錯誤,Exception 又分為兩種:
(1)受檢異常 :需要用 try…catch… 語句捕獲并進行處理,并且可以從異常中恢復;
(2)非受檢異常 :是程序運行時錯誤,例如空指針異常。

2、異常處理
對于不同的異常,java采用不同的異常處理方式:
(1)Error(錯誤):一般表示代碼運行時JVM出現問題。比如NoClassDefFoundError等。比如說當jvm耗完可用內存時,將出現OutOfMemoryError。此類錯誤發生時,JVM將終止線程。
(2)運行異常將由系統自動拋出,應用本身可以選擇處理或者忽略該異常。
(3)可查異常必須進行捕獲或者拋出該方法之外交給上層處理。要么使用try-catch捕獲,要么throws該異常。
3、面試題
(1)檢查型異常和非檢查型異常有什么區別
檢查型異常和非檢查型異常的主要區別在于其處理方式。檢查型異常都需要使用try,catch 和finally 關鍵字在編譯器進行處理,否則會出現編譯器報錯。對于非檢查型異常則不需要這樣做。Java中所有繼承 Exception 的類的異常都是檢查型異常,所有繼承RuntimeException 的異常都被稱為非檢查型異常。
(2)error和exception有什么區別
這里主要是對概念的理解。error 表示恢復不是不可能但很困難的情況下的一種嚴重問題。exception 表示一種設計或實現問題。也就是說,它表示如果程序運行正常,從不會發生的情況。
(3)final, finally, finalize的區別?
final是一個java關鍵字,用于聲明屬性,方法和類,分別表示屬性不可交變,方法不可覆蓋,類不可繼承。這個是在筆試當中常考的一個知識點。
finally是異常處理語句結構的一部分,表示finally里面的代碼塊一定會執行。。
finalize是Object類的一個方法,在垃圾收集器執行的時候會調用被回收對象的此方法,供垃圾收集時的其他資源回收,例如關閉文件等。
(4)常見的異常
NullPointException:空指針異常,Jdk8里面可以用Optional對象來避免。
IndexOutOfBoundsException:數組下標越界。
NumberFormatException:數字類型轉化異常。
ClassCastException:類型轉換異常,發生在強轉時。
FileNotFoundException:找不到指定文件。
ClassNotFoundException:在classpath中找不到引用的類缺乏引用當前類的jar或沒有設置classpath或jar損壞-,找到jar并放入classpath中或檢查jar是否損壞
OutOfMemoryError:內存溢出異常,增大初始化堆:-Xms 增加最大值:-Xmx
NoClassDefFoundError:找不到相應的類錯誤,缺乏當前引用類的jar或jar版本不對。ConcurrentModificationException:并發修改異常。
NoSuchMethodError:類里找不到相應的方法,一般是jar版本不對。
UnsupportedClassVersionError:版本不支持錯誤。
StackOverflowError:棧溢出錯誤,一般是函數的死循環。
歡迎分享轉載→http://www.avcorse.com/read-253298.html
Copyright ? 2024 有趣生活 All Rights Reserve吉ICP備19000289號-5 TXT地圖HTML地圖XML地圖