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方法終止該線程時拋出該異常。