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