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

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

為什么在使用 try 塊時必須在方法簽名后附加 throws Exception?

為什么在使用 try 塊時必須在方法簽名后附加 throws Exception?

慕妹3146593 2023-09-20 16:22:34
下面是我肯定誤解的事情。扔前;導致未報告的異常錯誤。它要求它必須被捕獲或聲明......但它正在 try 塊中被捕獲!為什么編譯器需要在方法簽名中顯式拋出異常?所需方法簽名:private static void div(int i, int j) throws Exception 代碼:   public class Exam {        private static void div(int i, int j) {            try {                System.out.println(i / j);            } catch(ArithmeticException e) {                Exception ex = new Exception(e);                throw ex;            }        }        public static void main(String[] args) {            try {                div(5, 0);            } catch(Exception e) {                System.out.println("END");            }        }    }
查看完整描述

2 回答

?
牛魔王的故事

TA貢獻1830條經驗 獲得超3個贊

順便說一句,正確的方法是ArithmeticException在需要時允許結束程序。


   public class Exam {

        private static void div(int i, int j) throws ArithmeticException {

           System.out.println(i / j);

        }

        public static void main(String[] args) throws Exception {

           div(5, 0);

        }

    }

更加干凈和清晰,異常提供了重要的調試信息,您需要這些信息來查找運行時錯誤。


我認為要捕獲第二個異常,您需要做的就是嵌套try. 您可以有多個catch相同的對象try,但它們都只能捕獲一個異常,它們不會級聯或按順序運行。要捕獲由 a 引發的異常,catch您需要另一個try塊。


    private static void div(int i, int j) {


      try {   // NESTED HERE


        try {

            System.out.println(i / j);

        } catch(ArithmeticException e) {

            Exception ex = new Exception(e);

            throw ex;

        }


      // THIS GOES WITH THE OUTER NESTED 'try'

      } catch( Exception x ) {

         System.out.println( "Caught a second exception: " + x );

      }

    }

但同樣,你不應該這樣做。允許拋出原始異常是更好的選擇。


查看完整回答
反對 回復 2023-09-20
?
波斯汪

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

我的結論:


此catch 語句處理一個異常:


try{

? ? stuff

}catch(OnlyThisException ex){

? ? throw ex;? ?//CHECKED EXCEPTION

}

此catch 語句也僅處理一個異常,而另一個則未處理:


try{

? ? stuff

}catch(OnlyThisException ex){

? ? Exception ex = new Exception(e);? //UNCHECKED! Needs catch block

? ? throw ex;? ?//CHECKED EXCEPTION

}


查看完整回答
反對 回復 2023-09-20
  • 2 回答
  • 0 關注
  • 121 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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