我这里有两个程序,分别使用多重try catch块和嵌套try catch块实现的。但是结果却相同。使用多重try catch块的方式不是更简洁吗?为什么还需要使用嵌套的try catch块。它们到底有什么区别呢?那个效率更高呢?多谢多谢!
使用多重的例子——
class NumberException {
    public void test(final String[] argument) {     try {
            System.out.println("传递的参数是:"+argument[0]);
            int numValue = Integer.parseInt(argument[0]);
            System.out.println(argument[0] +"的平方" + "是" + numValue * numValue);
        } catch (ArrayIndexOutOfBoundsException ne) {
            System.out.println("请输入数字。");
        } catch (NumberFormatException nb) {
            System.out.println("不是一个数。");
        }
    }
}class MultipleCatch {
    public static void main(String[] args) {
        NumberException obj = new NumberException();
        obj.test(args); }
}
下面是多重的计算结果:
C:\>java MultipleCatch
请输入数字。C:\>java MultipleCatch aaa
传递的参数是:aaa
不是一个数。C:\>java MultipleCatch 12
传递的参数是:12
12的平方是144使用嵌套的例子——
class NestedException {
    protected NestedException() {
    }
    public void test(final String[] argument) {
         try {
           System.out.println("传递的参数是: " + argument[0]);
            try {
                int numValue = Integer.parseInt(argument[0]);                System.out.println(argument[0] +"的平方" + "是"
                +  numValue * numValue);            } catch (NumberFormatException nb) {
            System.out.println("不是一个数! ");        }
       } catch (ArrayIndexOutOfBoundsException ne) {
           System.out.println("请输入数字。");
       }
    }
}
class NestedTry {
    protected NestedTry() {
    }
    public static void main(String[] args) {
       NestedException obj = new NestedException();
       obj.test(args);
   }
}
下面是使用嵌套输出的结果:
C:\>java NestedTry
请输入数字。C:\>java NestedTry aaa
传递的参数是: aaa
不是一个数!C:\>java NestedTry 12
传递的参数是: 12
12的平方是144到底有啥区别阿?

解决方案 »

  1.   

    try {
                System.out.println("传递的参数是: " + argument[0]);
                
                // 我在这里加一个循环。
                for (int i=0; i<3; i++) {
                    try {
                        int numValue = Integer.parseInt(argument[0]);                    System.out.println(argument[0] +"的平方" + "是"
                            +  numValue * numValue);                } catch (NumberFormatException nb) {
                        System.out.println("不是一个数! ");
                    }
                }
           } catch (ArrayIndexOutOfBoundsException ne) {
               System.out.println("请输入数字。");
           }如果出错的话,这段代码会出现3次,而多重只有一次。
      

  2.   

    accp? 北大青鸟?? 北大菜鸟??屁问题,拿本入门读物去看看吧!