try代码块的嵌套

一个try代码块可以嵌套在另一个try代码块中,由内部try代码块产生的异常如果没有被与该try代码块相关的catch捕获,就会被传送到外部try代码块.例如,下面的程序中捕获ArrayIndexOutOfBoundsException异常的不是内部的try代码块,而是外部try代码块:
    public static void main(String args[])
    {
     int nums[] = {1,2,3,4,5,6};
     int denom[] = {2,3,0,4,0,4};
     
     try {
         for(int i=0;i<nums.length+1;i++)
         {
          try {
              System.out.println(nums[i]+"/"+denom[i]+"="+nums[i]/denom[i]);
          } catch(ArrayIndexOutOfBoundsException  exc) {
              System.out.println("No matching  element found");
          } catch(Throwable exc) {
              System.out.println("some exception  occurred");
          }
         }
     } catch(Throwable exc) {
         System.out.println("some exception  occurred by for");
     }
     
    }
程序输出如下所示:
1/2=0
2/3=0
some exception occurred
4/4=1
some exception occurred
6/4=1
No matching element found
本例中,内部try可以处理的异常(这里是除以0错误)允许程序继续执行,而由外部try捕获的数组越界错误则使程序终止.
前面的程序总结了嵌套的try语句的重要作用之一.通常,嵌套的try代码用于以不同方式处理不同类型的错误.某些类型的错误是致命的,无法纠正.某些错误则较轻,可以马上处理.许多程序员使用外部try代码块捕获最严重的错误,让内部try代码块处理不太严重的错误.