问题 单项选择题

下列关于如下这段代码的说法中正确的是( )。
public class test

public static void throwit()

throw new RuntimeException();

public static void main(String args[])

try
System.out.println("你好吗");
throwit();
System.out.println("出错!");

finally
System.out.println("结束");


A.以上程序段不会编译

B.程序输出“你好吗”,然后有RuntimeException异常发生,输出“出错!”,输出“结束”

C.程序输出“你好吗”,然后有RunfimeException异常发生,然后输出“结束”

D.程序输出“你好吗”,然后输出“结束”,然后有RuntimeException异常发生

答案

参考答案:D

解析: 此程序没有语法错误,可以通过编译,所以选项A错误。程序首先从执行try块开始,输出“你好”,然后执行throwit()方法。在throwit()方法中导致Runtime Excephon异常的发生,因此,不会执行try块中throwit()方法后的语句。由于try块的后面存在finally块,在Java中,一旦定义了finally块,就保证一定会执行它,而不管是否发生了异常,所以执行finally块中的语句,从而输出“结束”。由于没有catch块来捕获发生的异常,程序的执行被中止。

选择题
多项选择题