例如:
class NestTry{
public static void main(String[] args){
try{
int a = args.length;
int b = 42 / a;
System.out.println("a = "+ a);
try{
if(a == 1){
a = a/(a-a);
}
if(a == 2){
int c[] = {1};
c[42] =99;
}
}catch(ArrayIndexOutOfBoundsException e){
System.out.println("ArrayIndexOutOfBounds :"+e);
}
}catch(ArithmeticException e){
System.out.println("Divide by 0"+ e);
}
}
}
正如程序中所显示的,该程序在一个try块中嵌套了另一个try
块。程序工作如下:当你在没有命令行参数的情况下执行该程序,外面的try
块将产生一个被0除的异常。程序在有一个命令行参数条件下执行,由嵌套的try
块产生一个被0除的异常,由于内部的catch
块不匹配这个异常,它将把异常传给外部的try
块,在外部异常被处理。如果你在具有两个命令行参数的条件下执行该程序,将由内部try
块产生一个数组边界异常。