Java基礎-Java中的異常有哪幾類?分別怎么使用?

從根本上講所有的異常都屬于Throwable的子類,從大的方面講分為Error(錯誤)和Exception(異常)。Eror是程序無法處理的異常,當發(fā)生Error時程序線程會終止運行。我們一般意義上講的異常就是指的Exception,這也是面試官常問的問題。

下面就簡單說一下關(guān)于Exception(以下都簡稱異常)的一點理解。

異常分為運行時異常(RuntimeException,又叫非檢查時異常)和非運行時異常(又叫檢查異常)。下面列舉一下常見的運行時異常:

NullPointerException - 試圖訪問一空對象的變量、方法或空數(shù)組的元素

ArrayIndexOutOfBoundsException - 數(shù)組越界訪問

NoClassDefFoundException - JAVA運行時系統(tǒng)找不到所引用的類

ArithmeticException - 算術(shù)運算中,被0除或模除

ArrayStoreException - 數(shù)據(jù)存儲異常,寫數(shù)組操作時,對象或數(shù)據(jù)類型不兼容

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

IllegalArgumentException - 方法的參數(shù)無效

IllegalThreadStateException - 試圖非法改變線程狀態(tài),比方說試圖啟動一已經(jīng)運行的線程

NumberFormatException - 數(shù)據(jù)格式異常,試圖把一字符串非法轉(zhuǎn)換成數(shù)值(或相反)

SecurityException - 如果Applet試圖執(zhí)行一被WWW瀏覽器安全設置所禁止的操作

IncompatibleClassChangeException - 如改變了某一類定義,卻沒有重新編譯其他引用了這個類的對象。如某一成員變量的聲明被從靜態(tài)改變?yōu)榉庆o態(tài),但其他引用了這個變量的類卻沒有重新編譯,或者相反。如刪除了類聲明中的某一域或方法,但沒有重新編譯那些引用了這個域或方法的類

OutOfMemoryException - 內(nèi)存不足,通常發(fā)生于創(chuàng)建對象之時

IncompatibleTypeException - 試圖實例化一個接口,Java運行時系統(tǒng)將拋出這個異常

UnsatisfiedLinkException - 如果所需調(diào)用的方法是C函數(shù),但Java運行時系統(tǒng)卻無法連接這個函數(shù)

InternalException - 系統(tǒng)內(nèi)部故障所導致的異常情況,可能是因為Java運行時系統(tǒng)本身的原因。如果發(fā)現(xiàn)一可重現(xiàn)的InternalException,可以直接給Sun公司發(fā)電郵java@java.Sun.com

前三種異常是我在開發(fā)中經(jīng)常性遇到的問題,對于運行時異常通過它的別名(非檢查是異常)我們可以知道這些異常不是我們寫代碼的時候可以檢查到的,而是程序在運行的時候可能會發(fā)生的,也就是說這是在業(yè)務邏輯上可能會出現(xiàn)的問題。對于這類異常就需要我們在開發(fā)的時候盡量的把業(yè)務邏輯可能會出現(xiàn)的問題考慮清楚,進行異常捕捉。

常用的方法包括:try{}catch(Exception e){}finally{}和throws兩種辦法。try{}catch(Exception e){}finally{}是在方法中對異常進行捕獲,catch可以寫多個,Java運行時系統(tǒng)從上到下分別對每個catch語句處理的例外類型進行檢測,直到找到類型相匹配的catch語句為止。(具體的就不過多贅述)throws是出現(xiàn)在方法頭部,個人理解算是在最外層拋出異常。關(guān)于對運行時異常的處理,詳情可以看這篇文章http://blog.csdn.net/zhuangzhineng/article/details/4000821,里面講的格外詳細,這里就不過多贅述。

非運行時異常中我們常遇到的可能有IOException、SQLException等,這類異常就是我們編寫的代碼、sql語句的問題了,這就需要我們回到代碼中仔細檢查了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、異常 簡介:1.程序運行時,發(fā)生的不被期望的事件,它阻止了程序按照程序員的預期正常執(zhí)行,這就是異常。異常處理機...
    危君子頻道閱讀 518評論 3 10
  • 1.JAVA反射 1)反射機制概念:在運行狀態(tài)中,對于任何一個類都能夠知道這個類所有屬性和方法,并且對于任意一個對...
    YQT_T閱讀 455評論 0 1
  • 什么是異常 異常是指阻止當前方法或者作用域繼續(xù)執(zhí)行的問題。異常對象(包括Exception和Error)都是Thr...
    朽木丿碎風閱讀 427評論 0 1
  • @[toc] 異常 在程序設計和運行的過程中,發(fā)生錯誤是不可避免的。盡管 Java 語言的設計從根本上提供了便于寫...
    夜雨流云閱讀 342評論 0 0
  • 16宿命:用概率思維提高你的勝算 以前的我是風險厭惡者,不喜歡去冒險,但是人生放棄了冒險,也就放棄了無數(shù)的可能。 ...
    yichen大刀閱讀 7,821評論 0 4

友情鏈接更多精彩內(nèi)容