所前所述,与一个try相关的catch语句可以有多个.事实上,这也是很常见的.然而这样一来,每一个catch语句就必须捕获一种不同类型的异常.例如,下面所示的程序即捕获数组越界异常,又捕获除以0异常:
public class test2 { // @param args public static void main(String args[]) { int nums[] = {1,2,3,4,5,6}; int denom[] = {2,3,0,4,0,4}; for(int i=0;i<nums.length;i++) { try { System.out.println(nums[i]+"/"+denom[i]+"="+nums[i]/denom[i]); } catch(ArithmeticException exc) { System.out.println("can't divide by zero!"); } catch(ArrayIndexOutOfBoundsException exc) { System.out.println("No matching element found"); } } } }
正如输出所证实,每一个catch语句只对自己类型的异常做出响应.
一般来说,catch表达式按照在程序中出现的顺序被检查.只执行匹配的语句,忽略其他所有的catch代码块.