try-catch
public class CatchWho2 { public static void main(String[] args) { try { try { // 抛出 ArrayIndexOutOfBoundsException throw new ArrayIndexOutOfBoundsException(); } // 捕获 ArrayIndexOutOfBoundsException catch(ArrayIndexOutOfBoundsException e) { System.out.println("ArrayIndexOutOfBoundsException 被捕获在内层 try-catch"); } // 抛出 ArithmeticException throw new ArithmeticException(); } // 捕获 ArithmeticException catch(ArithmeticException e) { System.out.println("ArithmeticException 被捕获在外层 try-catch"); } // 这个 catch 块不会被执行,因为 ArithmeticException 已经被捕获 catch(ArrayIndexOutOfBoundsException e) { System.out.println("ArrayIndexOutOfBoundsException 被捕获在外层 try-catch"); } } }```` 输出结果: ArrayIndexOutOfBoundsException 被捕获在内层 try-catch ArithmeticException 被捕获在外层 try-catch 解释: 内层 try-catch: 在内层 try 语句中,我们抛出了 ArrayIndexOutOfBoundsException,它会被捕获在 catch(ArrayIndexOutOfBoundsException e) 语句中,输出 "ArrayIndexOutOfBoundsException 被捕获在内层 try-catch"。 外层抛出 ArithmeticException: 内层 try-catch 完成后,外层 try 语句抛出了 ArithmeticException,这个异常会被外层 catch(ArithmeticException e) 捕获并输出 "ArithmeticException 被捕获在外层 try-catch"。 未执行的外层 ArrayIndexOutOfBoundsException 捕获: 由于 ArithmeticException 已经在外层 catch 中被捕获,所以外层的 catch(ArrayIndexOutOfBoundsException e) 永远不会执行。