程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java_異常類(毛病和異常,二者的差別引見)

Java_異常類(毛病和異常,二者的差別引見)

編輯:關於JAVA

Java_異常類(毛病和異常,二者的差別引見)。本站提示廣大學習愛好者:(Java_異常類(毛病和異常,二者的差別引見))文章只能為提供參考,不一定能成為您想要的結果。以下是Java_異常類(毛病和異常,二者的差別引見)正文


在 Java 中,一切的異常都有一個配合的先人 Throwable(可拋出)。Throwable 指定代碼中可用異常流傳機制經由過程 Java 運用法式傳輸的任何成績的個性。

Throwable 有兩個主要的子類:Exception(異常)和 Error(毛病),兩者都是 Java 異常處置的主要子類,各自都包括年夜量子類。

①.Exception(異常)是運用法式中能夠的可猜測、可恢復成績。普通年夜多半異常表現中度到輕度的成績。異常普通是在特定情況下發生的,平日湧現在代碼的特定辦法和操作中。在 EchoInput 類中,當試圖挪用 readLine 辦法時,能夠湧現 IOException 異常。

Exception 類有一個主要的子類 RuntimeException。RuntimeException 類及其子類表現“JVM 經常使用操作”激發的毛病。例如,若試圖應用空值對象援用、除數為零或數組越界,則分離激發運轉時異常(NullPointerException、ArithmeticException)和 ArrayIndexOutOfBoundException。

②.Error(毛病)表現運轉運用法式中較嚴重成績。年夜多半毛病與代碼編寫者履行的操作有關,而表現代碼運轉時 JVM(Java 虛擬機)湧現的成績。例如,當 JVM 不再有持續履行操作所需的內存資本時,將湧現 OutOfMemoryError。

檢討異常 和 未檢討異常 的劃分

Java中的異常分為兩年夜類:

1.Checked Exception(非Runtime Exception)

2.Unchecked Exception(Runtime Exception)

運轉時異常

RuntimeException類是Exception類的子類,它叫做運轉時異常,Java中的一切運轉時異常都邑直接或許直接地繼續自RuntimeException類。

Java中但凡繼續自Exception,而不繼續自RuntimeException類的異常都長短運轉時異常。

一個try前面可以跟多個catch,但不論若干個,最多只會有一個catch塊被履行。

關於非運轉時異常(checked exception),必需要對其停止處置,不然沒法經由過程編譯。

處置方法有兩種:

1.應用try..catch..finally停止捕捉;

2.在發生異常的辦法聲明前面寫上throws 某一個Exception類型,如throws Exception,將異常拋出到裡面一層去。

關於運轉時異常(runtime exception),可以對其停止處置,也能夠不處置。推舉纰謬運轉時異常停止處置。

擴大:毛病和異常的差別(Error vs Exception)

1).java.lang.Error: Throwable的子類,用於標志嚴重毛病。公道的運用法式不該該去try/catch這類毛病。絕年夜多半的毛病都長短正常的,就基本不應湧現的。

java.lang.Exception: Throwable的子類,用於指導一種公道的法式想去catch的前提。即它僅僅是一種法式運轉前提,而非嚴重毛病,而且勉勵用戶法式去catch它。

2).Error和RuntimeException 及其子類都是未檢討的異常(unchecked exceptions),而一切其他的Exception類都是檢討了的異常(checked exceptions).

checked exceptions: 平日是從一個可以恢復的法式中拋出來的,而且最好可以或許從這類異常中應用法式恢復。好比FileNotFoundException, ParseException等。檢討了的異常產生在編譯階段,必需要應用try…catch(或許throws)不然編譯欠亨過。

unchecked exceptions: 平日是假如一切正常的話本不應產生的異常,然則切實其實產生了。產生在運轉期,具有不肯定性,重要是因為法式的邏輯成績所惹起的。好比ArrayIndexOutOfBoundException, ClassCastException等。從說話自己的角度講,法式不應去catch這類異常,固然可以或許從諸如RuntimeException如許的異常中catch並恢復,然則其實不勉勵終端法式員這麼做,由於完整沒要需要。由於這類毛病自己就是bug,應當被修復,湧現此類毛病時法式就應當立刻停滯履行。 是以,面臨Errors和unchecked exceptions應當讓法式主動終止履行,法式員不應做諸如try/catch如許的工作,而是應當查明緣由,修正代碼邏輯。

RuntimeException:RuntimeException系統包含毛病的類型轉換、數組越界拜訪和試圖拜訪空指針等等。

處置RuntimeException的准繩是:假如湧現 RuntimeException,那末必定是法式員的毛病。例如,可以經由過程檢討數組下標和數組界限來防止數組越界拜訪異常。其他(IOException等等)checked異常普通是內部毛病,例如試圖從文件尾後讀取數據等,這其實不是法式自己的毛病,而是在運用情況中湧現的內部毛病。

以上這篇Java_異常類(毛病和異常,二者的差別引見) 就是小編分享給年夜家的全體內容了,願望能給年夜家一個參考,也願望年夜家多多支撐。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved