为了账号安全,请及时绑定邮箱和手机立即绑定

为什么在使用 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 关注
  • 82 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信