getCustomerInfo() 方法如下,try 中可以捕获三种类型的异常,如果在该方法运行中产生了一个 IOException,将会输出什么结果?( )
public void getCustomerInfo() {
try {
// do something that may cause an Exception
} catch (FileNotFoundException e) {
System.out.print("FileNotFoundException!");
} catch (IOException e) {
System.out.print("IOException!");
} catch (Exception e) {
System.out.print("Exception!");
}
}
A. FileNotFoundException!
B. IOException!
C. IOException!Exception!
D. FileNotFoundException!IOException!
解析: 本道题主要考察的是 Java 中多重 catch 块是如何捕获异常的问题。
在 Java 中,try-catch 是经典的异常捕获及处理组合,try 块中编写可能会出现异常的代码段,而在 catch 块中则编写如果出现了某种异常后的处理代码段。
为了能够捕获并分别处理不同类型的异常,多重 catch 块是必不可少的。它的执行流程与选择结构中的多重 if 类似,当 try 块中出现异常的时候,只要有一个 catch 块能够捕获当前 try 块中的异常,那么就会直接进行处理而不再执行后续其他的 catch 块了。
如本题题干中所述,如果在该方法运行中产生了一个 IOException,那么自上而下进行捕获,IOException 的 catch 块可以捕获该异常,后续其他的 catch 块就不再执行捕获了。
所以,最终的输出结果就是 IOException! 。