如何在java中仅使用一个try-catch块处理来自多个不同方法的多个异常?

如何在java中仅使用一个try-catch块处理来自多个不同方法的多个异常?,java,Java,在这段代码中有两个异常,但我无法打印这两个异常。输出中只显示一个异常。我希望在执行一次程序时显示所有异常 public class OneTry { int x = 0; int y = 5; int c; public void divide() { c = y / x; System.out.println("Divide" + c); } public void arr() { int a[]

在这段代码中有两个异常,但我无法打印这两个异常。输出中只显示一个异常。我希望在执行一次程序时显示所有异常

public class OneTry {
    int x = 0;
    int y = 5;
    int c;

    public void divide() {
        c = y / x;
        System.out.println("Divide" + c);
    }
    public void arr() {
        int a[] = new int[2];
        System.out.println(a[3]);
    }
    public void sum() {
        c = x + y;
        System.out.println("Sum" + c);
    }
    public void mult() {
        c = x * y;
        System.out.println("mult" + c);
    }
    public static void main(String abc[]) {

        OneTry obj = new OneTry();

        try {
            obj.divide();

            obj.arr();

            obj.mult();

            obj.sum();
        } catch (ArrayIndexOutOfBoundsException | ArithmeticException e2) {
            System.out.println(e2);
        }
    }
}

由于方法调用
obj.divide(),程序只抛出算术异常

程序流被此异常中断,并落在catch块中。
obj.divide()之后的方法,这意味着ArrayIndexOutOfBoundsException永远不会与您的输入一起抛出

如果要测试ArrayIndexOutOfBoundsException,请对第一个方法调用进行注释


一般来说,我想不出在同一个try块中可以抛出多个异常的场景

您确定有两个异常吗?您只是捕获了两个不同的异常,但这并不意味着两个异常都被抛出。
ArrayIndexOutOfBoundsException
是一种您永远不应该捕获的异常。如果您的应用程序抛出异常并进入catch块,try块的执行已取消。异常终止执行。异常的工作方式与您认为的不同。一旦程序抛出一个异常,执行将移动到catch块,它就没有机会抛出第二个异常。