如何在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()之后的方法不调用code>,这意味着ArrayIndexOutOfBoundsException永远不会与您的输入一起抛出
如果要测试ArrayIndexOutOfBoundsException,请对第一个方法调用进行注释
一般来说,我想不出在同一个try块中可以抛出多个异常的场景您确定有两个异常吗?您只是捕获了两个不同的异常,但这并不意味着两个异常都被抛出。ArrayIndexOutOfBoundsException
是一种您永远不应该捕获的异常。如果您的应用程序抛出异常并进入catch块,try块的执行已取消。异常终止执行。异常的工作方式与您认为的不同。一旦程序抛出一个异常,执行将移动到catch块,它就没有机会抛出第二个异常。