自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

10 個讓人深惡痛絕的 Java 異常

開發(fā) 后端
異常是 Java 程序中經(jīng)常遇到的問題,我想每一個 Java 程序員都討厭異常,一 個異常就是一個 BUG,就要花很多時間來定位異常問題。

 異常是 Java 程序中經(jīng)常遇到的問題,我想每一個 Java 程序員都討厭異常,一 個異常就是一個 BUG,就要花很多時間來定位異常問題。

什么是異常及異常的分類請看這篇文章:一張圖搞清楚 Java 異常機制。

今天,棧長來列一下 Java 中經(jīng)常遇到的前 10 個異常,排名不分先后。

[[257324]]

1、NullPointerException

空指針異常,操作一個 null 對象的方法或?qū)傩詴r會拋出這個異常。

2、OutOfMemoryError

內(nèi)存異常異常,這不是程序能控制的,是指要分配的對象的內(nèi)存超出了當(dāng)前***的堆內(nèi)存,需要調(diào)整堆內(nèi)存大小(-Xmx)以及優(yōu)化程序。

3、IOException

IO,即:input, output,我們在讀寫磁盤文件、網(wǎng)絡(luò)內(nèi)容的時候經(jīng)常會生的一種異常,這種異常是受檢查異常,需要進行手工捕獲。

如文件讀寫會拋出 IOException:

  1. public int read() throws IOException 
  2. public void write(int b) throws IOException 

4、FileNotFoundException

文件找不到異常,如果文件不存在就會拋出這種異常。

如定義輸入輸出文件流,文件不存在會報錯:

  1. public FileInputStream(File file) throws FileNotFoundException 
  2. public FileOutputStream(File file) throws FileNotFoundException 

FileNotFoundException 其實是 IOException 的子類,同樣是受檢查異常,需要進行手工捕獲。

5、ClassNotFoundException

類找不到異常,Java開發(fā)中經(jīng)常遇到,是不是很絕望?這是在加載類的時候拋出來的,即在類路徑下不能加載指定的類。

看一個示例:

  1. public static <T> Class<T> getExistingClass(ClassLoader classLoader, String className) { 
  2.   try { 
  3.      return (Class<T>) Class.forName(className, true, classLoader); 
  4.   } 
  5.   catch (ClassNotFoundException e) { 
  6.      return null
  7.   } 

它是受檢查異常,需要進行手工捕獲。

6、ClassCastException

類轉(zhuǎn)換異常,將一個不是該類的實例轉(zhuǎn)換成這個類就會拋出這個異常。

如將一個數(shù)字強制轉(zhuǎn)換成字符串就會報這個異常:

  1. Object x = new Integer(0); 
  2. System.out.println((String)x); 

這是運行時異常,不需要手工捕獲。

7、NoSuchMethodException

沒有這個方法異常,一般發(fā)生在反射調(diào)用方法的時候,如:

  1. public Method getMethod(String name, Class<?>... parameterTypes) 
  2.     throws NoSuchMethodException, SecurityException { 
  3.     checkMemberAccess(Member.PUBLIC, Reflection.getCallerClass(), true); 
  4.     Method method = getMethod0(name, parameterTypes, true); 
  5.     if (method == null) { 
  6.         throw new NoSuchMethodException(getName() + "." + name + argumentTypesToString(parameterTypes)); 
  7.     } 
  8.     return method; 

它是受檢查異常,需要進行手工捕獲。

8、IndexOutOfBoundsException

索引越界異常,當(dāng)操作一個字符串或者數(shù)組的時候經(jīng)常遇到的異常。

 

如圖所示,它是運行時異常,不需要手工捕獲。

9、ArithmeticException

算術(shù)異常,發(fā)生在數(shù)字的算術(shù)運算時的異常,如一個數(shù)字除以 0 就會報這個錯。

  1. double n = 3 / 0; 

這個異常雖然是運行時異常,可以手工捕獲拋出自定義的異常,如:

  1. public static Timestamp from(Instant instant) { 
  2.     try { 
  3.         Timestamp stamp = new Timestamp(instant.getEpochSecond() * MILLIS_PER_SECOND); 
  4.         stamp.nanos = instant.getNano(); 
  5.         return stamp; 
  6.     } catch (ArithmeticException ex) { 
  7.         throw new IllegalArgumentException(ex); 
  8.     } 

10、SQLException

SQL異常,發(fā)生在操作數(shù)據(jù)庫時的異常。

如下面的獲取連接:

  1. public Connection getConnection() throws SQLException { 
  2.     if (getUser() == null) { 
  3.         return DriverManager.getConnection(url); 
  4.     } else { 
  5.         return DriverManager.getConnection(url, getUser(), getPassword()); 
  6.     } 

又或者是獲取下一條記錄的時候:

  1. boolean next() throws SQLException; 

它是受檢查異常,需要進行手工捕獲。

責(zé)任編輯:武曉燕 來源: Java技術(shù)棧
相關(guān)推薦

2018-08-07 11:15:48

2020-11-02 11:36:51

勒索軟件Maze攻擊

2009-03-09 11:01:34

2021-01-12 19:45:39

Flash路由器軟件

2010-11-03 11:06:57

職場

2011-06-28 08:59:46

瑞星U盤病毒

2019-07-17 15:53:54

AIIBM績效管理

2011-02-28 14:46:00

2025-04-07 09:10:15

2010-08-27 13:26:16

IE6IE7FF

2019-10-25 16:16:52

數(shù)據(jù)庫操作系統(tǒng)黑客

2010-08-20 09:33:22

IE6IE7IE8

2012-03-07 11:00:56

2021-04-25 21:11:48

數(shù)據(jù)工具技術(shù)

2012-09-25 09:52:20

2009-08-18 10:53:38

Windows 7代碼拒絕IE 6Silverlight

2011-06-21 11:02:15

JavaJboss

2019-07-29 12:48:08

2019-09-20 10:27:39

網(wǎng)絡(luò)安全瀏覽器釣魚

2018-01-26 17:36:12

點贊
收藏

51CTO技術(shù)棧公眾號