检查异常和非检查异常 有空你去学一下检查异常和非检查异常
https://blog.csdn.net/weixin_39220472/article/details/81056647
?
?
?
Java檢查異常和非檢查異常,運(yùn)行時(shí)異常和非運(yùn)行時(shí)異常的區(qū)別
灰太狼_cxh 2018-07-15 20:51:31 ?7131 ?收藏 17
展開(kāi)
通常,Java的異常(包括Exception和Error)分為
檢查異常(checked exceptions)和非檢查的異常(unchecked exceptions)。
其中根據(jù)Exception異常進(jìn)行劃分,可分為運(yùn)行時(shí)異常和非運(yùn)行時(shí)異常。
What:什么是檢查異常(checked exception)?
就是編譯器要求你必須處置的異常。不知道你編程的時(shí)候有沒(méi)有遇到過(guò),你寫的某段代碼,編譯器要求你必須要對(duì)這段代碼try...catch,或者throws exception,如果你遇見(jiàn)過(guò),沒(méi)錯(cuò),這就是檢查異常,也就是說(shuō),你代碼還沒(méi)運(yùn)行呢,編譯器就會(huì)檢查你的代碼,會(huì)不會(huì)出現(xiàn)異常,要求你對(duì)可能出現(xiàn)的異常必須做出相應(yīng)的處理。
How:怎樣處理檢查異常(checked exception)?
1、繼續(xù)拋出,消極的方法,一直可以拋到j(luò)ava虛擬機(jī)來(lái)處理,就是通過(guò)throws exception拋出。
2、用try...catch捕獲
注意,對(duì)于檢查的異常必須處理,或者必須捕獲或者必須拋出
Where:檢查異常有哪些呢?
除了RuntimeException與其子類,以及錯(cuò)誤(Error),其他的都是檢查異常(絕對(duì)的大家族)。
?
What:什么是非檢查異常(unchecked exceptions)?
編譯器不要求強(qiáng)制處置的異常,雖然你有可能出現(xiàn)錯(cuò)誤,但是我不會(huì)在編譯的時(shí)候檢查,沒(méi)必要,也不可能。
How:對(duì)未檢查的異常(unchecked exception )怎樣處理?
1、捕獲
2、繼續(xù)拋出
3、不處理
一般我們是不處理的,因?yàn)槟愫茈y判斷會(huì)出什么問(wèn)題,而且有些異常你也無(wú)法運(yùn)行時(shí)處理,比如空指針,需要人手動(dòng)的去查找。
而且,捕捉異常并處理的代價(jià)遠(yuǎn)遠(yuǎn)大于直接拋出。
?
Why:為什么有非檢查異常?
你想想非檢查異常都有哪些?NullPointerException,IndexOutOfBoundsException,VirtualMachineError等,這些異常你編譯的時(shí)候檢查嗎?再說(shuō)了,明明可以運(yùn)行時(shí)檢查,都在編譯的時(shí)候檢查,你寫的代碼還能看嗎?而且有些異常只能在運(yùn)行時(shí)才能檢查出來(lái),比如空指針,堆溢出等。
Where:非檢查異常有哪些?
RuntimeException與其子類,以及錯(cuò)誤(Error)。
?
Exception異常進(jìn)行劃分,它可分為運(yùn)行時(shí)異常和非運(yùn)行時(shí)異常。
What:什么是運(yùn)行時(shí)異常?
都是RuntimeException類及其子類異常,如NullPointerException(空指針異常)、IndexOutOfBoundsException(下標(biāo)越界異常)等,這些異常是非檢查異常,程序中可以選擇捕獲處理,也可以不處理。這些異常一般是由程序邏輯錯(cuò)誤引起的,程序應(yīng)該從邏輯角度盡可能避免這類異常的發(fā)生。
運(yùn)行時(shí)異常的特點(diǎn)是Java編譯器不會(huì)檢查它,也就是說(shuō),當(dāng)程序中可能出現(xiàn)這類異常,即使沒(méi)有用try-catch語(yǔ)句捕獲它,也沒(méi)有用throws子句聲明拋出它,也會(huì)編譯通過(guò)。
What:什么是非運(yùn)行時(shí)異常?
是RuntimeException以外的異常,類型上都屬于Exception類及其子類。從程序語(yǔ)法角度講是必須進(jìn)行處理的異常,如果不處理,程序就不能編譯通過(guò)。如IOException、SQLException等以及用戶自定義的Exception異常,一般情況下不要自定義檢查異常。
我的座右銘:不會(huì),我可以學(xué);落后,我可以追趕;跌倒,我可以站起來(lái);我一定行。
————————————————
版權(quán)聲明:本文為CSDN博主「灰太狼_cxh」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/weixin_39220472/article/details/81056647
總結(jié)
以上是生活随笔為你收集整理的检查异常和非检查异常 有空你去学一下检查异常和非检查异常的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 白眼狼比喻什么样的人(形容白眼狼的这群人
- 下一篇: 同步外部接口数据的一些记录和分享