(A D)
public viod test(){
try {oneMethod();
System.out.println(“情况1”);
} catch (ArrayIndexOutofBoundsException e){
System.out.println(“情况2”);
} catch (Exception e){
System.out.println(“情况3”);
} finally{
System.out.println(“finally”);
}
}
A.情况1 B.情况2 C.情况3 D.finally
解:如果try子句中的语句在执行时发生异常,则执行从该处中断而进入catch块,根据异常的类型进行匹配,最前面的优先进行匹配比较,只要该异常是catch中指定的异常的子类就匹配成功进而执行相应的catch中的内容,而finally块中的内容无论是否发生异常都将被执行。
因为try子句中的语句在执行时正常,所以将显示选项A与选项D的内容。
给出下列不完整的方法:
1)
2){ success = connect();
3)if (success = -1) {
4) throw new TimedOutException();
5) }
6)}
TimedOutException不是一个RuntimeException运行时异常类。下面的哪些声明可以被加入第一行完成此方法的声明?说明理由。 (B C)
A. public void method()
B. public void method() throws Exception
C. public void method() throws TimedOutException
D. public void method() throw TimedOutException
E. public throw TimedOutException void method()
解:如果程序在运行的过程中抛出异常,而这个异常又不是RuntimeException或者Error,那么程序必须捕获这个异常进行处理或者声明抛弃(throws)该异常,捕获异常可以使用try{}catch(){}语句,而抛弃异常在方法声明时声明,可在方法的声明后面加上throws XxxxException,抛弃多个异常时在各异常间使用逗号(,)分隔。
题目中的程序在运行时抛出的不是一个RuntimeException,所以必须捕获或者抛弃,而程序有没有捕获,所以应该在方法声明时声明抛弃。由于Exception是所有异常的父类,所以当然也可以代表TimeOutException了,选项B和C都是可以的。