在Java面試問題中最常被問及的就是Java異常如何處理,今天小編就和大家一起來探討一下Java異常如何處理。
1.Java中的檢查型異常和非檢查型異常有什么區(qū)別?
這是一個非常流行的Java異常面試題,會出現(xiàn)在各種層次的Java面試中。檢查型異常和非檢查型異常的主要區(qū)別在于其處理方式。檢查型異常需要使用try,catch和finally關(guān)鍵字在編譯期進行處理,否則會出現(xiàn)編譯器會報錯。對于非檢查型異常則不需要這樣做。Java中所有繼承自java.lang.Exception類的異常都是檢查型異常,所有繼承自RuntimeException的異常都被稱為非檢查型異常。
2.Java中什么是Exception?
這個問題經(jīng)常在第一次問有關(guān)異常的時候或者是面試菜鳥的時候問。從來沒見過面高級或者資深工程師的時候有人問這玩意,但是對于菜鳥,是很愿意問這個的。簡單來說,異常是Java傳達給你的系統(tǒng)和程序錯誤的方式。在Java中,異常功能是通過實現(xiàn)比如Throwable,Exception,RuntimeException之類的類,然后還有一些處理異常時候的關(guān)鍵字,比如throw,throws,try,catch,finally之類的。所有的異常都是通過Throwable衍生出來的。Throwable把錯誤進一步劃分為java.lang.Exception和java.lang.Error.java.lang.Error用來處理系統(tǒng)錯誤,例如
java.lang.StackOverFlowError或者
Java.lang.OutOfMemoryError之類的。然后Exception用來處理程序錯誤,請求的資源不可用等等。
3.在Java異常處理的過程中,你遵循的最好的實踐是什么?
這個問題在面試技術(shù)經(jīng)理是非常常見的一個問題。因為異常處理在項目設(shè)計中是非常關(guān)鍵的,所以精通異常處理是十分必要的。異常處理有很多最佳實踐,下面列舉集中,它們提高你代碼的健壯性和靈活性:
1)調(diào)用方法的時候返回布爾值來代替返回null,這樣可以NullPointerException。由于空指針是java異常里最惡心的異常。
2)catch塊里別不寫代碼??誧atch塊是異常處理里的錯誤事件,因為它只是捕獲了異常,卻沒有任何處理或者提示。通常你起碼要打印出異常信息,當(dāng)然你最好根據(jù)需求對異常信息進行處理。
3)能拋受控異常(checked Exception)就盡量不拋非受控異常(unchecked Exception)。通過去掉重復(fù)的異常處理代碼,可以提高代碼的可讀性。
4)絕對不要讓你的數(shù)據(jù)庫相關(guān)異常顯示到客戶端。由于絕大多數(shù)數(shù)據(jù)庫和SQLException異常都是受控異常,在Java中,你應(yīng)該在DAO層把異常信息處理,然后返回處理過的能讓用戶看懂并根據(jù)異常提示信息改正操作的異常信息。
5)在Java中,一定要在數(shù)據(jù)庫連接,數(shù)據(jù)庫查詢,流處理后,在finally塊中調(diào)用close()方法。
4.Java中的NullPointerException和
ArrayIndexOutOfBoundException之間有什么相同之處?
在Java異常面試中這并不是一個很流行的問題,但會出現(xiàn)在不同層次的初學(xué)者面試中,用來測試應(yīng)聘者對檢查型異常和非檢查型異常的概念是否熟悉。順便說一下,該題的答案是,這兩個異常都是非檢查型異常,都繼承自RuntimeException。該問題可能會引出另一個問題,即Java和C的數(shù)組有什么不同之處,因為C里面的數(shù)組是沒有大小限制的,絕對不會拋出
ArrayIndexOutOfBoundException。
5.既然我們可以用RuntimeException來處理錯誤,那么你認為為什么Java中還存在檢查型異常?
這是一個有爭議的問題,在回答該問題時你要小心。雖然他們肯定愿意聽到你的觀點,但其實他們最感興趣的還是有說服力的理由。其中一個理由是,存在檢查型異常是一個設(shè)計上的決定,受到了諸如C++等比Java更早的編程語言設(shè)計經(jīng)驗的影響。絕大多數(shù)檢查型異常位于java.io包內(nèi),這是合乎情理的,因為在你請求了不存在的系統(tǒng)資源的時候,一段強壯的程序必須能夠優(yōu)雅的處理這種情況。通過把IOException聲明為檢查型異常,Java確保了你能夠優(yōu)雅的對異常進行處理。另一個可能的理由是,可以使用catch或finally來確保數(shù)量受限的系統(tǒng)資源(比如文件描述符)在你使用后盡早得到釋放。
Java技術(shù)相關(guān)文檔
Java異常簡介:http://www.bjpowernode.com/tutorial_java_advance/613.html
Java異常處理:http://www.bjpowernode.com/tutorial_java_advance/614.html
以上就是長沙達內(nèi)教育java培訓(xùn)機構(gòu)的小編針對“面試經(jīng)常遇到的問題:Java異常處理過程”的內(nèi)容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務(wù)。