亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我可以在同一個catch子句中捕獲多個Java異常嗎?

我可以在同一個catch子句中捕獲多個Java異常嗎?

慕村9548890 2019-07-29 14:31:48
我可以在同一個catch子句中捕獲多個Java異常嗎?在Java中,我想做這樣的事情:try {     ...     } catch (/* code to catch IllegalArgumentException, SecurityException,              IllegalAccessException, and NoSuchFieldException at the same time */) {    someCode();}...代替:try {     ...     } catch (IllegalArgumentException e) {     someCode();} catch (SecurityException e) {     someCode();} catch (IllegalAccessException e) {     someCode();} catch (NoSuchFieldException e) {     someCode();}有沒有辦法做到這一點?
查看完整描述

3 回答

?
千萬里不及你

TA貢獻1784條經驗 獲得超9個贊

自Java 7以來,這是可能的。多捕獲塊的語法是:

try { 
  ...} catch (IOException | SQLException ex) { 
  ...}

但請記住,如果所有異常都屬于同一個類層次結構,則可以簡單地捕獲該基本異常類型。

另請注意,如果ExceptionB直接或間接地從ExceptionA繼承,則無法在同一塊中捕獲ExceptionA和ExceptionB。編譯器會抱怨:

Alternatives in a multi-catch statement cannot be related by subclassing
  Alternative ExceptionB is a subclass of alternative ExceptionA


查看完整回答
反對 回復 2019-07-29
?
繁華開滿天機

TA貢獻1816條經驗 獲得超4個贊

不完全是在Java 7之前,但我會做這樣的事情: 

Java 6和之前的版本

try {
  //.....} catch (Exception exc) {
  if (exc instanceof IllegalArgumentException || exc instanceof SecurityException || 
     exc instanceof IllegalAccessException || exc instanceof NoSuchFieldException ) {

     someCode();

  } else if (exc instanceof RuntimeException) {
     throw (RuntimeException) exc;     

  } else {
    throw new RuntimeException(exc);
  }}



Java 7

try {
  //.....} catch ( IllegalArgumentException | SecurityException |
         IllegalAccessException |NoSuchFieldException exc) {
  someCode();}


查看完整回答
反對 回復 2019-07-29
?
斯蒂芬大帝

TA貢獻1827條經驗 獲得超8個贊

在Java 7中,您可以定義多個catch子句,如:

catch (IllegalArgumentException | SecurityException e){
    ...}


查看完整回答
反對 回復 2019-07-29
  • 3 回答
  • 0 關注
  • 2511 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號