更新時(shí)間:2022-04-21 來(lái)源:黑馬程序員 瀏覽量:
在程序運(yùn)行的過(guò)程中也會(huì)發(fā)生異常情況,例如運(yùn)行時(shí)內(nèi)存溢出、磁盤(pán)空間不足、網(wǎng)絡(luò)中斷等。針對(duì)此類(lèi)狀況,Java中提供了異常處理機(jī)制,以異常類(lèi)的形式對(duì)這些不正常情況進(jìn)行封裝,通過(guò)異常處理機(jī)制對(duì)程序代碼發(fā)生的各種問(wèn)題進(jìn)行有針對(duì)性地處理。接下來(lái)通過(guò)一個(gè)案例來(lái)了解一下什么是異常,如文件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); } // 下面的方法實(shí)現(xiàn)了兩個(gè)整數(shù)相除 public static int calculate(int a, int b) { int res = a / b; // 定義一個(gè)變量res記錄兩個(gè)數(shù)相除的結(jié)果 return res; // 將結(jié)果返回 } }運(yùn)行結(jié)果如圖3-21所示。
圖3-21運(yùn)行結(jié)果
從圖3-21的運(yùn)行結(jié)果可以看出,程序出現(xiàn)了算術(shù)異常(ArithmeticException),這個(gè)異常是由于在第4行代碼調(diào)用divide()方法時(shí)傳入了參數(shù)0,而在calculate()方法中,運(yùn)算時(shí)出現(xiàn)了被0除的情況。程序出現(xiàn)異常后導(dǎo)致程序立即結(jié)束,無(wú)法繼續(xù)向下執(zhí)行。
在上一小節(jié)中產(chǎn)生的ArithmeticException異常只是Java異常體系中的一種,在Java中還提供了大量的異常類(lèi),這些異常類(lèi)都是java.lang.Throwable類(lèi)的子類(lèi)。
接下來(lái)通過(guò)一張圖來(lái)學(xué)習(xí)Throwable類(lèi)的繼承體系,如圖3-22所示。
圖3-22Throwable體系架構(gòu)圖
通過(guò)圖3-22可以看出,Throwable有兩個(gè)直接子類(lèi)Error和Exception,其中Error表示程序代碼中出現(xiàn)的錯(cuò)誤,Exception表示程序代碼中出現(xiàn)的異常。他們的區(qū)別在于,錯(cuò)誤是指僅靠程序本身是不能恢復(fù)執(zhí)行的,而異常是指通過(guò)程序本身可以處理的錯(cuò)誤。
如何實(shí)現(xiàn)抽象類(lèi)中的方法?
2022-04-21超簡(jiǎn)單,超實(shí)用,2022最新SSM框架全套教程
2022-04-21如何實(shí)現(xiàn)應(yīng)用程序歡迎界面的延遲跳轉(zhuǎn)功能?
2022-04-19為什么要使用微服務(wù)架構(gòu)?【微服務(wù)架構(gòu)出現(xiàn)的背景】
2022-04-13黑馬企業(yè)級(jí)項(xiàng)目《瑞吉外賣(mài)》 全套教程共190節(jié)+源碼
2022-04-12什么是生命周期?Activity生命周期的三種狀態(tài)
2022-04-12