下列关于如下这段代码的说法中正确的是( )。
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块来捕获发生的异常,程序的执行被中止。