考虑一下我有一个try块,其中包含3条语句,所有这些语句都会导致Exception。我希望所有3个异常都由其相关的catch块处理。是否可能?

像这样的东西->

class multicatch
{
    public static void main(String[] args)
    {
        int[] c={1};
        String s="this is a false integer";
        try
        {
            int x=5/args.length;
            c[10]=12;
            int y=Integer.parseInt(s);
        }
        catch(ArithmeticException ae)
        {
            System.out.println("Cannot divide a number by zero.");
        }
        catch(ArrayIndexOutOfBoundsException abe)
        {
            System.out.println("This array index is not accessible.");
        }
        catch(NumberFormatException nfe)
        {
            System.out.println("Cannot parse a non-integer string.");
        }
    }
}

是否可以获得以下输出? ->>
Cannot divide a number by zero.
This array index is not accessible.
Cannot parse a non-integer string.

最佳答案

是否可以获得以下输出?

不,因为将仅引发异常之一。抛出异常后,执行立即离开try块,并假设存在匹配的catch块,它将继续在那里。它不会返回try块,因此您不会以第二个异常结束。

有关异常处理的一般课程,请参见Java tutorial,有关更多详细信息,请参见section 11.3 of the JLS

08-18 07:20