W3Cschool
恭喜您成為首批注冊(cè)用戶(hù)
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
異常類(lèi)層次結(jié)構(gòu)從java.lang.Throwable類(lèi)開(kāi)始。
當(dāng)拋出異常時(shí),它必須是Throwable類(lèi)的對(duì)象或其任何子類(lèi)。
catch塊的參數(shù)必須是Throwable類(lèi)型,或其子類(lèi)之一,例如Exception,ArithmeticException,IOException等。
我們可以通過(guò)從一個(gè)異常類(lèi)繼承我們的類(lèi)來(lái)創(chuàng)建我們自己的異常類(lèi)。
Java運(yùn)行時(shí)選擇適當(dāng)?shù)腸atch塊,并從第一個(gè)catch塊開(kāi)始順序?qū)ふ液线m的catch時(shí)鐘。
try塊的多個(gè)catch塊必須從最具體的異常類(lèi)型排列為最通用的異常類(lèi)型。
以下代碼使用多個(gè)catch塊的有效序列。
ArithmeticException類(lèi)是RuntimeException類(lèi)的子類(lèi)。
如果這兩個(gè)異常都在同一個(gè)try塊的catch塊中處理,那么最具體的類(lèi)型,即ArithmeticException,必須出現(xiàn)在最通用的類(lèi)??型之前,即RuntimeException。
try { // Do something, which might throw Exception } catch(ArithmeticException e1) { // Handle ArithmeticException first } catch(RuntimeException e2) { // Handle RuntimeException after ArithmeticException }
有三種類(lèi)型的異常:
第一類(lèi)中的異常稱(chēng)為檢查異常,因?yàn)榫幾g器檢查它們是否在代碼中處理。
Throwable類(lèi),Exception類(lèi)和Exception類(lèi)的子類(lèi)(不包括RuntimeException類(lèi)及其子類(lèi))稱(chēng)為檢查異常。
所有未檢查異常的異常稱(chēng)為未檢查異常,因?yàn)榫幾g器不檢查它們是否在代碼中處理。
Error類(lèi),Error類(lèi)的所有子類(lèi),RuntimeException類(lèi)及其所有子類(lèi)都是未檢查的異常。
我們可以處理未檢查的異常,如果我們想,編譯器不會(huì)強(qiáng)迫我們這樣做。
以下代碼顯示如何處理已檢查的異常:
import java.io.IOException; public class Main { public static void main(String[] argv) { try { int input = System.in.read(); if (input != -1) { System.out.println(input); } } catch (IOException e) { System.out.print("IOException occurred."); } } }
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話(huà):173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: