更新時間:2022-04-21 來源:黑馬程序員 瀏覽量:
在程序運行的過程中也會發(fā)生異常情況,例如運行時內(nèi)存溢出、磁盤空間不足、網(wǎng)絡(luò)中斷等。針對此類狀況,Java中提供了異常處理機制,以異常類的形式對這些不正常情況進(jìn)行封裝,通過異常處理機制對程序代碼發(fā)生的各種問題進(jìn)行有針對性地處理。接下來通過一個案例來了解一下什么是異常,如文件3-41所示。
文件3-41Example17.java
package com.itheima.example17; public class Example17 { public static void main(String[] args) { int res = calculate(5, 0); // 調(diào)用calculate()方法 System.out.println(res); } // 下面的方法實現(xiàn)了兩個整數(shù)相除 public static int calculate(int a, int b) { int res = a / b; // 定義一個變量res記錄兩個數(shù)相除的結(jié)果 return res; // 將結(jié)果返回 } }運行結(jié)果如圖3-21所示。
圖3-21運行結(jié)果
從圖3-21的運行結(jié)果可以看出,程序出現(xiàn)了算術(shù)異常(ArithmeticException),這個異常是由于在第4行代碼調(diào)用divide()方法時傳入了參數(shù)0,而在calculate()方法中,運算時出現(xiàn)了被0除的情況。程序出現(xiàn)異常后導(dǎo)致程序立即結(jié)束,無法繼續(xù)向下執(zhí)行。
在上一小節(jié)中產(chǎn)生的ArithmeticException異常只是Java異常體系中的一種,在Java中還提供了大量的異常類,這些異常類都是java.lang.Throwable類的子類。
接下來通過一張圖來學(xué)習(xí)Throwable類的繼承體系,如圖3-22所示。
圖3-22Throwable體系架構(gòu)圖
通過圖3-22可以看出,Throwable有兩個直接子類Error和Exception,其中Error表示程序代碼中出現(xiàn)的錯誤,Exception表示程序代碼中出現(xiàn)的異常。他們的區(qū)別在于,錯誤是指僅靠程序本身是不能恢復(fù)執(zhí)行的,而異常是指通過程序本身可以處理的錯誤。