1.3 Error和Exception的异同
生活随笔
收集整理的這篇文章主要介紹了
1.3 Error和Exception的异同
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Error(錯誤)和 Exception(異常)都是 java.lang.Throwable 類的子類,在 Java 代碼中只有繼承了 Throwable 類的實例才能被 throw 或者 catch。
Exception 和 Error 體現(xiàn)了 Java 平臺設(shè)計者對不同異常情況的分類,
- Exception 是程序正常運行過程中可以預(yù)料到的意外情況,并且應(yīng)該被開發(fā)者捕獲,進行相應(yīng)的處理。
- Error 是指正常情況下不大可能出現(xiàn)的情況,絕大部分的 Error 都會導(dǎo)致程序處于非正常、不可恢復(fù)狀態(tài)。所以不需要被開發(fā)者捕獲。
- Error 錯誤是任何處理技術(shù)都無法恢復(fù)的情況,肯定會導(dǎo)致程序非正常終止。并且 Error 錯誤屬于未檢查類型,大多數(shù)發(fā)生在運行時。
- Exception又分為可檢查(checked)異常和不檢查(unchecked)異常,可檢查異常在源碼里必須顯示的進行捕獲處理,這里是編譯期檢查的一部分。不檢查異常就是所謂的運行時異常,通常是可以編碼避免的邏輯錯誤,具體根據(jù)需要來判斷是否需要捕獲,并不會在編譯器強制要求。
如下是常見的 Error 和 Exception:
1)運行時異常(RuntimeException):
- NullPropagation:空指針異常;
- ClassCastException:類型強制轉(zhuǎn)換異常
- IllegalArgumentException:傳遞非法參數(shù)異常
- IndexOutOfBoundsException:下標(biāo)越界異常
- NumberFormatException:數(shù)字格式異常
2)非運行時異常:
- ClassNotFoundException:找不到指定 class 的異常
- IOException:IO 操作異常
3)錯誤(Error):
- NoClassDefFoundError:找不到 class 定義異常
- StackOverflowError:深遞歸導(dǎo)致棧被耗盡而拋出的異常
- OutOfMemoryError:內(nèi)存溢出異常
例 1
下面代碼會導(dǎo)致 Java 堆棧溢出錯誤。
運行輸出為:
Exception in thread "main" java.lang.StackOverflowErrorat ch11.StackOverflow.test(ErrorEg.java:9)at ch11.StackOverflow.test(ErrorEg.java:9)at ch11.StackOverflow.test(ErrorEg.java:9)at ch11.StackOverflow.test(ErrorEg.java:9)上面代碼通過無限遞歸調(diào)用最終引發(fā)了 java.lang.StackOverflowError 錯誤。
總結(jié)
以上是生活随笔為你收集整理的1.3 Error和Exception的异同的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1.2 内置异常类,异常方法
- 下一篇: 1.4 异常处理机制及异常处理的基本结构