異常處理(007)_常見的java異常有哪些(非運行時)


1、常見的java運行時異常有哪些

瞭解非運行時異常看這裏:什麼是java中的異常 
常見的運行時異常看這裏:常見的運行時異常有哪些

我們所說的常見異常是jdk或者其他常用第三方jar中的異常,出現頻次很高的異常。常見的非運行時異常(即檢查異常,checked exception)包括:

  • 操作數據庫異常:SQLException
  • 輸入輸出異常:IOException
  • 文件未找到異常:FileNotFoundException
  • 反射操作異常:ReflectiveOperationException
  • 類未找到異常: ClassNotFoundException

  • 方法未找到異常:NoSuchMethodException

  • 字段未找到異常:NoSuchFieldException
  • 非法訪問權限異常:IllegalAccessException
  • 實例化異常:InstantiationException
  • 不支持克隆異常:CloneNotSupportedException

  • 被中止異常:InterruptedException


2、什麼情況下會拋出這些異常

如何拋出異常看這裏:java如何拋出異常

1.java.lang.SQLException

該異常的解釋是:sql異常。 
sql語句異常種類十分多,通常都是sql語句、數據庫執行錯誤導致,常見的表現有:

  • invalid column name 無效列名
  • table or view does not exist 表或者視圖不存在
  • cannot insert NULL into () 不能將空值插入
  • 缺少表達式
  • SQL 命令未正確結束

在操作數據庫時需要考慮全面,儘量避免該異常。

2.java.lang.IOException

該異常的解釋是:輸入輸出異常。 
該異常種類也十分多(擁有很多子類),尤其對文件的操作,以及Android開發。常見的表現有:

  • FileNotFoundException 文件找不到。
  • InvalidPropertiesFormatException 輸入內容不符合屬性集的正確 XML 文檔類型。

3.java.lang.FileNotFoundException

該異常的解釋是:文件不存在異常。該異常繼承於 IOException。 
這個異常通常是獲取文件時,文件路徑或文件名稱錯誤導致的。

4.java.lang.ReflectiveOperationException

該異常的解釋是:反射操作相關的異常。 
由於反射的特殊性,類、方法、屬性均使用String作爲名稱進行操作,對於該類異常一定要十分注意。 
瞭解反射看這裏:什麼是java中的反射

5.java.lang.ClassNotFoundException

該異常的解釋是:指定的類不存在。該異常繼承於ReflectiveOperationException。 
這個異常通常是在使用反射時,或者服務端引入jar包時拋出。 
使用反射時,根據類名(字符串)獲取Class時,包、類名有誤會造成該異常。

6.java.lang.NoSuchMethodException

該異常的解釋是:指定的方法不存在。該異常繼承於ReflectiveOperationException。 
這個異常通常是在使用反射時拋出。 
使用反射時,根據方法名(字符串)調用Method時,方法名有誤會造成該異常。

7.java.lang.NoSuchFieldException

該異常的解釋是:指定的字段不存在。該異常繼承於ReflectiveOperationException。 
這個異常通常是在使用反射時拋出。 
使用反射時,根據字段名(字符串)獲取、操作Field時,字段名有誤會造成該異常。

8.java.lang.IllegalAccessException

該異常的解釋是:沒有訪問權限。 
當應用程序要調用一個類,但當前的方法即沒有對該類的訪問權限便會出現這個異常。 
最常見的地方即在使用反射調用private方法/屬性時會拋出該異常,將private方法/屬性共有化public即可。 
想了解public和privite看這裏:public、privite、protected有什麼區別

9.java.lang.InstantiationException

該異常的解釋是:實例化異常。該異常繼承於ReflectiveOperationException。 
當試圖通過newInstance()方法創建某個類的實例,而該類是一個抽象類或接口時,拋出該異常。

10.java.lang.CloneNotSupportedException

該異常的解釋是:不支持克隆異常。該異常繼承於 ReflectiveOperationException。 
當沒有實現Cloneable接口或者不支持克隆方法時,調用其clone()方法則拋出該異常。

11.java.lang.InterruptedException

該異常的解釋是:被中止異常。 
當某個線程處於長時間的等待、休眠或其他暫停狀態,而此時其他的線程通過Thread的interrupt方法終止該線程時拋出該異常。

發佈了21 篇原創文章 · 獲贊 10 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章