问题 单项选择题

下列程序的运行结果是()  public class test{  private String[] data={“10”,“10.5”};  public void fun(){  double s=0;  for(int i=0;i<3;i++){  try{  s=s+Integer .parseInt(data[i]);  }catch(Exception e){  System.out.print(“errorl:”+data[i]);  }  }  }  public static void main(String[]args){  try{  testd=new test();  d .fun();  }catch(Exception e){  System.out.printIn(“error2”);  }  }  }

A.errorl:10.5

B.error2

C.errorl:10.5 error2

D.以上都不对

答案

参考答案:C

解析:

try-catch块是可以嵌套分层的,并且通过异常对象的数据类型进行匹配,以找到正确的catch block异常错误处理代码。以下是通过异常对象的数据类型进行匹配找到正确的catch b10ck的过程。 ①首先在抛出异常的try-catch块中查找catch block,按顺序先与第一个catch block块匹配,如果抛出的异常对象的数据类型与catch block中传入的异常对象的临时变量(就是catch语句后面参数)的数据类型完全相同,或是它的子类型对象,则匹配成功,进入catch block中执行,否则到第②步; ②如果有两个或更多的catch block,则继续查找匹配第二个、第三个,乃至最后一个catch block,如匹配成功,则进入对应的catch block中执行,否则到第③步; ③返回到上一级的try-catch块中,按规则继续查找对应的catch block。如果找到,进入对应的catch block中执行,否则到第4步; ④再到上上级的try-catch块中,如此不断递归,直到匹配到顶级的try-catch块中的最后一个catch block,如果找到,进入到对应的catch block中执行;否则程序将会执行terminate()退出。所以选C

单项选择题
问答题