日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

面试常见java异常题_Java异常面试题(含答案)

發(fā)布時(shí)間:2025/3/12 java 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 面试常见java异常题_Java异常面试题(含答案) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1、Java中異常分為哪兩種?

編譯時(shí)異常

運(yùn)行時(shí)異常

2、異常的處理機(jī)制有幾種?

異常捕捉:try…catch…finally,異常拋出:throws。

3、如何自定義一個(gè)異常

繼承一個(gè)異常類,通常是RumtimeException或者Exception

4、try catch fifinally,try里有return,finally還執(zhí)行么?

執(zhí)行,并且finally的執(zhí)行早于try里面的return

結(jié)論:

1.不管有木有出現(xiàn)異常,finally塊中代碼都會(huì)執(zhí)行;

2.當(dāng)try和catch中有return時(shí),finally仍然會(huì)執(zhí)行;

3.finally是在return后面的表達(dá)式運(yùn)算后執(zhí)行的(此時(shí)并沒有返回運(yùn)算后的值,而是先把要返回的值保存起來,管finally中的代碼怎么樣,返回的值都不會(huì)改變,任然是之前保存的值),所以函數(shù)返回值是在finally執(zhí)行前確定的;

4.finally中最好不要包含return,否則程序會(huì)提前退出,返回值不是try或catch中保存的返回值。

5、 Excption與Error包結(jié)構(gòu)

Java可拋出(Throwable)的結(jié)構(gòu)分為三種類型:被檢查的異常(CheckedException),運(yùn)行時(shí)異常

(RuntimeException),錯(cuò)誤(Error)。

1.運(yùn)行時(shí)異常

定義:RuntimeException及其子類都被稱為運(yùn)行時(shí)異常。

特點(diǎn):Java編譯器不會(huì)檢查它。也就是說,當(dāng)程序中可能出現(xiàn)這類異常時(shí),倘若既"沒有通過throws聲明拋出它",也"沒有用try-catch語(yǔ)句捕獲它",還是會(huì)編譯通過。例如,除數(shù)為零時(shí)產(chǎn)生的ArithmeticException異常,數(shù)組越界時(shí)產(chǎn)生的IndexOutOfBoundsException異常,failfast機(jī)制產(chǎn)生的ConcurrentModi?cationException異常(java.util包下面的所有的集合類都是快速失敗的,“快速失敗”也就是fail-fast,它是Java集合的一種錯(cuò)誤檢測(cè)機(jī)制。當(dāng)多個(gè)線程對(duì)集合進(jìn)行結(jié)構(gòu)上的改變的操作時(shí),有可能會(huì)產(chǎn)生fail-fast機(jī)制。記住是有可能,而不是一定。

例如:假設(shè)存在兩個(gè)線程(線程1、線程2),線程1通過Iterator在遍歷集合A中的元素,在某個(gè)時(shí)候線程2修改了集合A的結(jié)構(gòu)(是結(jié)構(gòu)上面的修改,而不是簡(jiǎn)單的修改集合元素的內(nèi)容),那么這個(gè)時(shí)候程序就會(huì)拋出ConcurrentModi?cationException異常,從而產(chǎn)生fail-fast機(jī)制,這個(gè)錯(cuò)叫并發(fā)修改異常。Fail-safe,java.util.concurrent包下面的所有的類都是安全失敗的,在遍歷過程中,如果已經(jīng)遍歷的數(shù)組上的內(nèi)容變化了,迭代器不會(huì)拋出

ConcurrentModi?cationException異常。如果未遍歷的數(shù)組上的內(nèi)容發(fā)生了變化,則有可能反映到迭代過程中。這就是ConcurrentHashMap迭代器弱一致的表現(xiàn)。ConcurrentHashMap的弱一致性主要是為了提升效率,是一致性與效率之間的一種權(quán)衡。要成為強(qiáng)一致性,就得到處使用鎖,甚至是全局鎖,這就與Hashtable和同步的HashMap一樣了。)等,都屬于運(yùn)行時(shí)異常。

常見的五種運(yùn)行時(shí)異常:

ClassCastException(類轉(zhuǎn)換異常)

IndexOutOfBoundsException(數(shù)組越界)

NullPointerException(空指針異常)

ArrayStoreException(數(shù)據(jù)存儲(chǔ)異常,操作數(shù)組是類型不一致)

Bu?erOver?owException

2.被檢查異常

定義:Exception類本身,以及Exception的子類中除了"運(yùn)行時(shí)異常"之外的其它子類都屬于被檢查異常。特點(diǎn) : Java編譯器會(huì)檢查它。此類異常,要么通過throws進(jìn)行聲明拋出,要么通過try-catch進(jìn)行捕獲處理,否則不能通過編譯。例如,CloneNotSupportedException就屬于被

檢查異常。當(dāng)通過clone()接口去克隆一個(gè)對(duì)象,而該對(duì)象對(duì)應(yīng)的類沒有實(shí)現(xiàn)Cloneable接口,就會(huì)拋出CloneNotSupportedException異常。被檢查異常通常都是可以恢復(fù)的。

如:

IOException

FileNotFoundException

SQLException

被檢查的異常適用于那些不是因程序引起的錯(cuò)誤情況,比如:讀取文件時(shí)文件不存在引發(fā)的FileNotFoundException 。然而,不被檢查的異

常通常都是由于糟糕的編程引起的,比如:在對(duì)象引用時(shí)沒有確保對(duì)象非空而引起的 NullPointerException 。

3.錯(cuò)誤

定義 : Error類及其子類。

特點(diǎn) : 和運(yùn)行時(shí)異常一樣,編譯器也不會(huì)對(duì)錯(cuò)誤進(jìn)行檢查。當(dāng)資源不足、約束失敗、或是其它程序無法繼續(xù)運(yùn)行的條件發(fā)生時(shí),就產(chǎn)生錯(cuò)誤。程序本身無法修復(fù)這些錯(cuò)誤的。例如,VirtualMachineError就屬于錯(cuò)誤。出現(xiàn)這種錯(cuò)誤會(huì)導(dǎo)致程序終止運(yùn)行。OutOfMemoryError、ThreadDeath。

Java虛擬機(jī)規(guī)范規(guī)定JVM的內(nèi)存分為了好幾塊,比如堆,棧,程序計(jì)數(shù)器,方法區(qū)等

6、Thow與thorws區(qū)別

位置不同

throws 用在函數(shù)上,后面跟的是異常類,可以跟多個(gè);而 throw 用在函數(shù)內(nèi),后面跟的

是異常對(duì)象。

功能不同

2. throws 用來聲明異常,讓調(diào)用者只知道該功能可能出現(xiàn)的問題,可以給出預(yù)先的處理方

式;throw 拋出具體的問題對(duì)象,執(zhí)行到 throw,功能就已經(jīng)結(jié)束了,跳轉(zhuǎn)到調(diào)用者,并

將具體的問題對(duì)象拋給調(diào)用者。也就是說 throw 語(yǔ)句獨(dú)立存在時(shí),下面不要定義其他語(yǔ)

句,因?yàn)閳?zhí)行不到。

3. throws 表示出現(xiàn)異常的一種可能性,并不一定會(huì)發(fā)生這些異常;throw 則是拋出了異常,

執(zhí)行 throw 則一定拋出了某種異常對(duì)象。

4. 兩者都是消極處理異常的方式,只是拋出或者可能拋出異常,但是不會(huì)由函數(shù)去處理異

常,真正的處理異常由函數(shù)的上層調(diào)用處理。

7、Error與Exception區(qū)別?

Error和Exception都是java錯(cuò)誤處理機(jī)制的一部分,都繼承了Throwable類。

Exception表示的異常,異常可以通過程序來捕捉,或者優(yōu)化程序來避免。

Error表示的是系統(tǒng)錯(cuò)誤,不能通過程序來進(jìn)行錯(cuò)誤處理。

8、error和exception有什么區(qū)別

error 表示恢復(fù)不是不可能但很困難的情況下的一種嚴(yán)重問題。比如說內(nèi)存溢出。不可能指望程序能處理這樣的情況 exception 表示一種設(shè)

計(jì)或?qū)崿F(xiàn)問題。也就是說,它表示如果程序運(yùn)行正常,從不會(huì)發(fā)生的情況。

面試題不斷更新,歡迎關(guān)注微信公眾號(hào)【慕容千語(yǔ)】

總結(jié)

以上是生活随笔為你收集整理的面试常见java异常题_Java异常面试题(含答案)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。