1. 程式人生 > >異常之Java7捕獲多種型別異常

異常之Java7捕獲多種型別異常

在Java7之前,每個catch塊只能捕獲一種型別的異常,但從Java7開始一個catch可以捕獲多種型別的異常。

使用一個catch塊捕獲多種型別的異常時需要注意如下兩個地方:

1>捕獲多種型別的異常時,多種異常型別之間用豎線(|)隔開。

2>捕獲多種型別的異常時,異常變數有隱式的final修飾,因此程式不能對異常變數重新賦值。

示例:

public class MultiExceptionTest{

public static void main(String[ ] args){

try{

int a = Integer.parseInt(args[0]);

int b = Integer.parseInt(args[1]);

int c = a / b;

System.out.println("輸入兩數相除結果:" + c);

}catch(IndexOutOfBoundsException | NumberFormatException | ArithemticException ie){//(1)

System.out.println(“程式發生了陣列越界、數字格式異常、算數異常之一”);

//捕獲多異常時,異常變數預設有final修飾

//所以下面程式碼有錯

ie = new ArithmeticException("test");//(2)

}catch(Exception e){

System.out.println("未知異常");

//捕獲一種型別的未知異常時,異常變數沒有final修飾

//所以下面程式碼完全正確

e = new RuntimeException("test");//(3)

}

}

}

上面程式中1處使用了IndexOutOfBoundsException | NumberFormatException | ArithemticException來定義異常型別,這就表明該catch塊可以同時捕獲這三種類型的異常。捕獲多種型別的異常時,異常變數使用隱式的final修飾,因此上邊的2處程式碼會產生編譯錯誤;捕獲一種型別的異常時,異常變數沒有final修飾,因此上面程式中3處程式碼完全正確。

相關推薦

異常Java7捕獲多種型別異常

在Java7之前,每個catch塊只能捕獲一種型別的異常,但從Java7開始一個catch可以捕獲多種型別的異常。 使用一個catch塊捕獲多種型別的異常時需要注意如下兩個地方: 1>捕獲多種型別的異常時,多種異常型別之間用豎線(|)隔開。 2>捕獲多種型別的異

Java異常throws和throw 以及異常使用注意的原則

一.使用throws丟擲異常 如果在當前方法不知道該如何處理該異常時,則可以使用throws對異常進行丟擲給呼叫者處理或者交給JVM。JVM對異常的處理方式是:列印異常的跟蹤棧資訊並終止程式執行。 throws在使用時應處於方法簽名之後使用,可以丟擲多種異常

輸入任意兩個整數,求兩者的商。使用異常處理機制捕獲零除異常和引數格式異常

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Con

判斷異常型別,全面捕獲Python的異常

正文:     如果你在寫程式時遇到異常後想進行如下處理的話請參考我下面寫的對異常處理的方法: 假設有下面的一段程式: try:     語句1     語句2     .     語句N except .........:     print ....

sys.exc_info()可以捕獲到任意異常

code try except 返回 print pre () port pan 1 import sys 2 try: 3 a = 3 4 assert a > 4 5 except: 6 exc = sys.exc_info()#返回異常

調用外部dll,外部程序捕獲不了異常問題

corrupted 程序 sta bsp test exce ted nbsp 添加 在方法上添加如下: [HandleProcessCorruptedStateExceptions] [SecurityCritical] public void test()

python再學習----簡單的異常

lena input 直接 ase ber one rod can 跳過 # filename:python3.4.py# author:super# date:2018-03-04# try except 的時候 要把具體的except 內容打印出來# 如果不想做任何處理

Hibernate異常命名查詢節點未找到

red 異常 launcher next ren source contex per 標簽 異常信息: 1 java.lang.IllegalArgumentException: No query defined for that name [salaryEmps]

對前端異常window error捕獲的全面總結

value type dde style oct alert 參數 htm 異常捕獲 對於前端的異常捕獲,我們都會知道onerror事件,但針對window的error事件的用法,其實是有區別的。 方式一: window.onerror = handleOnError 1.

集合異常List接口

因此 .com 是否 eight new i++ 精確 替換元素 sys List接口介紹:是Collection接口中的子類, 特點: l 它是一個元素存取有序的集合。例如,存元素的順序是11、22、33。那麽集合中,元素的存儲就是按照11、22、33的順序完成的)。

《Java 解惑》 第五章 異常

簡述: 《Java 解惑》 第五章 異常之謎 - 筆記 內容: 謎題36: try中的return不會影響finally中方法執行 package 異常之謎.優柔寡斷; public class Indecisive { public static vo

**異常throws和throw的區別**

異常之throws和throw的區別 throws: 用在方法聲明後面,跟的是異常類名 可以跟多個異常類名,用逗號隔開 表示丟擲異常,由該方法的呼叫者來處理 表示出現異常的可能性,並不一定會發生這些異常(可能性) throw: 用在方法體內,跟的是異常物件名 只能丟擲一個異常物件名 異常丟擲

【Redis錯誤】-Redis存、取異常序列化問題

問題場景:因業務不斷擴充套件,實體類有較多的重複欄位,故要優化資料結構,從而優化系統性能,增加程式碼的可複用性。測試環境和預生產都沒有問題,到生產有部分欄位取不到數值,關了快取開關後,發現業務程式碼正常了,開啟快取就會出現各種null異常。 問題分析:Redis存進去的日誌正常,去的時候要麼少欄

mysql異常: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone

連線資料庫時顯示: java.sql.SQLException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone.  You must con

Dubbo異常Dubbo client can not supported string message記錄

今天系統上線,之前沒有出現錯誤的war包在執行時突然出現如下錯誤 一開始我是懵逼的  這個LOG臣妾是看不懂的,一開始還以為是什麼編碼格式錯了,找了半天發現全是UTF-8 後來注意到這段異常:[DUBBO] Dubbo client can not supported string

Sping boot加入Druid連線池異常Error creating bean with name 'dataSource'

配置Druid資料連線池之後一直報錯找不到資料來源 org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userController': Unsatisf

XmlSchema異常is java.lang.NoSuchMethodError: org.apache.ws.commons.schema.XmlSchemaColl

1.異常描述 2018-11-12 19:33:01 [com.guohualife.ebiz.config.property.cache.PropertyCache|]-[INFO] 快取預載入結束 2018-11-12 19:33:01 [org.apache.cxf.wsdl.se

AOP 捕獲自定義異常

package com.gqc.aop05; import org.springframework.aop.ThrowsAdvice; //異常通知 public class MyThrowsAdvice implements ThrowsAdvice { // 當目標方法丟擲Username

weblogic異常Tried all: '1' addresses, but could not connect over HTTP to server: 'java.sun.com', port

1.異常描述 com.ctc.wstx.exc.WstxIOException: Tried all: '1' addresses, but could not connect over HTTP to server: 'java.sun.com', port: '80' at com

weblogic異常[Store:280105]The persistent file store "WLS_DIAGNOSTICS" cannot open file WLS_DIAGNOSTIC

1.異常描述 weblogic.diagnostics.lifecycle.DiagnosticComponentLifecycleException: weblogic.store.PersistentStoreFatalException: [Store:280105]The per