问题详情

下列关于如下这段代码的说法中正确的是( )。 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异常发生

时间:2022-01-04 17:18 关键词:

答案解析

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