Java面試題寶典,異常處理面試題

Java面試題寶典,異常處理面試題

北大青鳥(niǎo)長(zhǎng)沙麓谷校區(qū)      2022-05-02 19:07:01     16

Java面試題寶典,異常處理面試題,  今天為大家整理了有關(guān)異常處理的常見(jiàn)經(jīng)典面試題,并且總結(jié)了參考答案,內(nèi)容包含了異常的分類(lèi)、Java異常處理機(jī)制等等,相信本

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

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

詳細(xì)介紹


  今天為大家整理了有關(guān)異常處理的常見(jiàn)經(jīng)典面試題,并且總結(jié)了參考答案,內(nèi)容包含了異常的分類(lèi)、Java異常處理機(jī)制等等,相信本文一定能解決大多數(shù)人對(duì)Java中異常處理的大部分問(wèn)題,有需要的朋友就趕緊收藏起來(lái)吧!



  1、Java中異常的分類(lèi)


  答案:按照異常需要處理的時(shí)機(jī)分為編譯時(shí)異常也叫 CheckedException 和運(yùn)行時(shí)異常(也叫非強(qiáng)制性異常)也叫 RuntimeException。只有Java語(yǔ)言提供了Checked異常,Java認(rèn)為Checked異常都是可以被處理的異常,所以Java程序必須顯式處理Checked異常。如果程序沒(méi)有處理Checked異常,該程序在編譯時(shí)就會(huì)發(fā)生錯(cuò)誤無(wú)法編譯。這體現(xiàn)了Java的設(shè)計(jì)哲學(xué):沒(méi)有完善錯(cuò)誤處理的代碼根本沒(méi)有機(jī)會(huì)被執(zhí)行。


  對(duì)Checked異常處理方法有兩種:當(dāng)前方法知道如何處理該異常,則用 try...catch 塊來(lái)處理該異常;當(dāng)前方法不知道如何處理,則在定義該方法是聲明拋出該異常。運(yùn)行時(shí)異常只有當(dāng)代碼在運(yùn)行時(shí)才發(fā)行的異常,編譯時(shí)不需要 try catch。Runtime 如除數(shù)是 0 和數(shù)組下標(biāo)越界等,其產(chǎn)生頻繁,處理麻煩,若顯示申明或者捕獲將會(huì)對(duì)程序的可讀性和運(yùn)行效率影響很大。所以由系統(tǒng)自動(dòng)檢測(cè)并將它們交給缺省的異常處理程序。當(dāng)然如果你有處理要求也可以顯示捕獲它們。


  2、調(diào)用下面的方法,得到的返回值是什么?


  答案:public int getNum(){

  try {

  int a = 1/0;

  return 1;

  } catch (Exception e) {

  return 2;

  }finally{

  return 3; 9.

  }


  3、Java異常處理機(jī)制


  答案:Java 對(duì)異常進(jìn)行了分類(lèi),不同類(lèi)型的異常分別用不同的 Java 類(lèi)表示,所有異常的根類(lèi)java.lang.Throwable,Throwable 下面又派生了兩個(gè)子類(lèi):Error 和 Exception,Error 表示應(yīng)用程序本身無(wú)法克服和恢復(fù)的一種嚴(yán)重問(wèn)題。Exception 表示程序還能夠克服和恢復(fù)的問(wèn)題,其中又分為系統(tǒng)異常和普通異常,系統(tǒng)異常是軟件本身缺陷所導(dǎo)致的問(wèn)題,也就是軟件開(kāi)發(fā)人員考慮不周所導(dǎo)致的問(wèn)題,軟件使用者無(wú)法克服和恢復(fù)這種問(wèn)題,但在這種問(wèn)題下還可以讓軟件系統(tǒng)繼續(xù)運(yùn)行或者讓軟件死掉,例如,數(shù)組腳本越界,空指針異常、類(lèi)轉(zhuǎn)換異常;普通異常是運(yùn)行環(huán)境的變化或異常所導(dǎo)致的問(wèn)題, 是用戶(hù)能夠克服的問(wèn)題,例如,網(wǎng)絡(luò)斷線(xiàn),硬盤(pán)空間不夠,發(fā)生這樣的異常后,程序不應(yīng)該死掉。


  Java 為系統(tǒng)異常和普通異常提供了不同的解決方案,編譯器強(qiáng)制普通異常必須 try..catch 處理或用 throws 聲明繼續(xù)拋給上層調(diào)用方法處理,所以普通異常也稱(chēng)為 checked 異常,而系統(tǒng)異??梢蕴幚硪部梢圆惶幚恚?,編譯器不強(qiáng)制用 try..catch 處理或用 throws 聲明,所以系統(tǒng)異常也稱(chēng)為 unchecked 異常。


  4、請(qǐng)寫(xiě)出你最常見(jiàn)的5個(gè)RuntimeException


  答案:下面列舉幾個(gè)常見(jiàn)的 RuntimeException。


  (1)Java.lang.NullPointerException 空指針異常;出現(xiàn)原因:調(diào)用了未經(jīng)初始化的對(duì)象或者是不存在的對(duì)象。


  (2)Java.lang.ClassNotFoundException 指定的類(lèi)找不到;出現(xiàn)原因:類(lèi)的名稱(chēng)和路徑加載錯(cuò)誤;通常都是程序試圖通過(guò)字符串來(lái)加載某個(gè)類(lèi)時(shí)可能引發(fā)異常。


  (3)Java.lang.NumberFormatException 字符串轉(zhuǎn)換為數(shù)字異常;出現(xiàn)原因:字符型數(shù)據(jù)中包含非數(shù)字型字符。


  (4)Java.lang.IndexOutOfBoundsException 數(shù)組角標(biāo)越界異常,常見(jiàn)于操作數(shù)組對(duì)象時(shí)發(fā)生。


  (5)Java.lang.IllegalArgumentException 方法傳遞參數(shù)錯(cuò)誤。


  (6)Java.lang.ClassCastException 數(shù)據(jù)類(lèi)型轉(zhuǎn)換異常。


  (7)Java.lang.NoClassDefFoundException 未找到類(lèi)定義錯(cuò)誤。


  (8)SQLException SQL 異常,常見(jiàn)于操作數(shù)據(jù)庫(kù)時(shí)的 SQL 語(yǔ)句錯(cuò)誤。


  (9)Java.lang.InstantiationException 實(shí)例化異常。


  (10)Java.lang.NoSuchMethodException 方法不存在異常。


  5、throw和throws的區(qū)別


  答案:


  throw:


  (1)throw 語(yǔ)句用在方法體內(nèi),表示拋出異常,由方法體內(nèi)的語(yǔ)句處理。


  (2)throw 是具體向外拋出異常的動(dòng)作,所以它拋出的是一個(gè)異常實(shí)例,執(zhí)行 throw 一定是拋出了某種異常。


  throws:


  (1)@throws 語(yǔ)句是用在方法聲明后面,表示如果拋出異常,由該方法的調(diào)用者來(lái)進(jìn)行異常的處理。


  (2)throws 主要是聲明這個(gè)方法會(huì)拋出某種類(lèi)型的異常,讓它的使用者要知道需要捕獲的異常的類(lèi)型。


  (3)throws 表示出現(xiàn)異常的一種可能性,并不一定會(huì)發(fā)生這種異常。


  6、final、finally、finalize的區(qū)別?


  答案:


  (1)final:用于聲明屬性,方法和類(lèi),分別表示屬性不可變,方法不可覆蓋,被其修飾的類(lèi)不可繼承。


  (2)finally:異常處理語(yǔ)句結(jié)構(gòu)的一部分,表示總是執(zhí)行。


  (3)finalize:Object 類(lèi)的一個(gè)方法,在垃圾回收器執(zhí)行的時(shí)候會(huì)調(diào)用被回收對(duì)象的此方法,可以覆蓋此方法提供垃圾收集時(shí)的其他資源回收,例如關(guān)閉文件等。該方法更像是一個(gè)對(duì)象生命周期的臨終方法,當(dāng)該方法被系統(tǒng)調(diào)用則代表該對(duì)象即將"死亡",但是需要注意的是,我們主動(dòng)行為上去調(diào)用該方法并不會(huì)導(dǎo)致該對(duì)象"死亡",這是一個(gè)被動(dòng)的方法(其實(shí)就是回調(diào)方法),不需要我們調(diào)用。



  以上就是北大青鳥(niǎo)長(zhǎng)沙麓谷校區(qū)java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“Java面試題寶典,異常處理面試題”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問(wèn),請(qǐng)?jiān)诰€(xiàn)咨詢(xún),有專(zhuān)業(yè)老師隨時(shí)為你服務(wù)。


Java面試題

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