2020年Java面試異常處理

2020年Java面試異常處理

深圳達(dá)內(nèi)教育      2022-03-04 23:20:01     18

2020年Java面試異常處理,從事Java開發(fā)的小伙伴在最初的面試時(shí)應(yīng)該會(huì)經(jīng)常遇到一些問題,那就是在Java面試用面試官提問的各種Java開發(fā)開發(fā)方面的問題,在Ja

課程價(jià)格 請(qǐng)咨詢

上課時(shí)段: 授課校區(qū):

詳細(xì)介紹

從事Java開發(fā)的小伙伴在最初的面試時(shí)應(yīng)該會(huì)經(jīng)常遇到一些問題,那就是在Java面試用面試官提問的各種Java開發(fā)開發(fā)方面的問題,在Java面試問題中最常被問及的就是Java異常如何處理,今天小編就和大家一起來探討一下Java異常如何處理。

  Java面試:Java異常如何處理

  1、Java中的檢查型異常和非檢查型異常有什么區(qū)別?

  這是一個(gè)非常流行的Java異常面試題,會(huì)出現(xiàn)在各種層次的Java面試中。檢查型異常和非檢查型異常的主要區(qū)別在于其處理方式。檢查型異常需要使用try, catch和finally關(guān)鍵字在編譯期進(jìn)行處理,否則會(huì)出現(xiàn)編譯器會(huì)報(bào)錯(cuò)。對(duì)于非檢查型異常則不需要這樣做。Java中所有繼承自java.lang.Exception類的異常都是檢查型異常,所有繼承自RuntimeException的異常都被稱為非檢查型異常。

  2、Java中什么是Exception?

  這個(gè)問題經(jīng)常在第一次問有關(guān)異常的時(shí)候或者是面試菜鳥的時(shí)候問。從來沒見過面高級(jí)或者資深工程師的時(shí)候有人問這玩意,但是對(duì)于菜鳥,是很愿意問這個(gè)的。簡(jiǎn)單來說,異常是Java傳達(dá)給你的系統(tǒng)和程序錯(cuò)誤的方式。在Java中,異常功能是通過實(shí)現(xiàn)比如Throwable,Exception,RuntimeException之類的類,然后還有一些處理異常時(shí)候的關(guān)鍵字,比如throw,throws,try,catch,finally之類的。所有的異常都是通過Throwable衍生出來的。Throwable把錯(cuò)誤進(jìn)一步劃分為 java.lang.Exception 和 java.lang.Error. java.lang.Error 用來處理系統(tǒng)錯(cuò)誤,例如java.lang.StackOverFlowError 或者Java.lang.OutOfMemoryError之類的。然后 Exception用來處理程序錯(cuò)誤,請(qǐng)求的資源不可用等等。

  3、在Java異常處理的過程中,你遵循的最好的實(shí)踐是什么?

  這個(gè)問題在面試技術(shù)經(jīng)理是非常常見的一個(gè)問題。因?yàn)楫惓L幚碓陧?xiàng)目設(shè)計(jì)中是非常關(guān)鍵的,所以精通異常處理是十分必要的。異常處理有很多最佳實(shí)踐,下面列舉集中,它們提高你代碼的健壯性和靈活性:

  1) 調(diào)用方法的時(shí)候返回布爾值來代替返回null,這樣可以NullPointerException。由于空指針是java異常里最惡心的異常。

  2) catch塊里別不寫代碼??誧atch塊是異常處理里的錯(cuò)誤事件,因?yàn)樗皇遣东@了異常,卻沒有任何處理或者提示。通常你起碼要打印出異常信息,當(dāng)然你最好根據(jù)需求對(duì)異常信息進(jìn)行處理。

  3)能拋受控異常(checked Exception)就盡量不拋非受控異常(unchecked Exception)。通過去掉重復(fù)的異常處理代碼,可以提高代碼的可讀性。

  4) 絕對(duì)不要讓你的數(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異常面試中這并不是一個(gè)很流行的問題,但會(huì)出現(xiàn)在不同層次的初學(xué)者面試中,用來測(cè)試應(yīng)聘者對(duì)檢查型異常和非檢查型異常的概念是否熟悉。順便說一下,該題的答案是,這兩個(gè)異常都是非檢查型異常,都繼承自RuntimeException。該問題可能會(huì)引出另一個(gè)問題,即Java和C的數(shù)組有什么不同之處,因?yàn)镃里面的數(shù)組是沒有大小限制的,絕對(duì)不會(huì)拋出ArrayIndexOutOfBoundException。

  5、 既然我們可以用RuntimeException來處理錯(cuò)誤,那么你認(rèn)為為什么Java中還存在檢查型異常?

  這是一個(gè)有爭(zhēng)議的問題,在回答該問題時(shí)你要小心。雖然他們肯定愿意聽到你的觀點(diǎn),但其實(shí)他們最感興趣的還是有說服力的理由。其中一個(gè)理由是,存在檢查型異常是一個(gè)設(shè)計(jì)上的決定,受到了諸如C++等比Java更早的編程語言設(shè)計(jì)經(jīng)驗(yàn)的影響。絕大多數(shù)檢查型異常位于java.io包內(nèi),這是合乎情理的,因?yàn)樵谀阏?qǐng)求了不存在的系統(tǒng)資源的時(shí)候,一段強(qiáng)壯的程序必須能夠優(yōu)雅的處理這種情況。通過把IOException聲明為檢查型異常,Java 確保了你能夠優(yōu)雅的對(duì)異常進(jìn)行處理。另一個(gè)可能的理由是,可以使用catch或finally來確保數(shù)量受限的系統(tǒng)資源(比如文件描述符)在你使用后盡早得到釋放。

      以上就是深圳達(dá)內(nèi)教育Java培訓(xùn)機(jī)構(gòu)小編介紹的“2020年Java面試異常處理”的內(nèi)容,希望對(duì)大家有幫助,如有疑問,請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。

相關(guān)推薦

最新最全java面試題及答案(初級(jí)到高級(jí))

史上最全的中高級(jí)JAVA工程師面試題及答案匯總

Java高級(jí)開發(fā)工程師面試題

2019史上最全java面試題題庫大全800題

哪有資深java工程師面試題

培訓(xùn)啦提醒您:交易時(shí)請(qǐng)核實(shí)對(duì)方資質(zhì),對(duì)于過大宣傳或承諾需謹(jǐn)慎!任何要求預(yù)付定金、匯款等方式均存在風(fēng)險(xiǎn),謹(jǐn)防上當(dāng)。