Java认证考试实例疑难辨析(1)

来源:互联网 发布:股票技术分析软件 编辑:程序博客网 时间:2024/05/22 02:14

1.

【知识点】

(1)Thread(线程):

线程对象创建后,可以调用start()方法启动,但线程实际开始运行时间点是由系统调度决定的,不能认为调用start()方法后一定会立即执行线程;

(2)Exception(异常):Java语言中异常有三种类型:

(a)checked exception(受检异常),这类异常是最常见异常,在编写应用程序时可以预期它会发生,并且通过try…catch…finally语句块捕捉,以便程序能从异常中恢复运行,防止出现程序崩溃,比如文件处理中的FileNotFoundException异常。

(b)error(错误),这类异常是应用程序编写时无法预期的,一旦发生也不可恢复运行。通常是由系统或硬件故障等外部原因造成,由于错误无法预期因此通常不采用try…catch…finally语句块捕捉。

(c)runtime exception(运行时异常),这类异常虽然也是应用程序内部原因造成的,但应用程序通常也是无法预期它的发生,发生后也无法让程序恢复运行,比如NullPointerException,虽然应用程序能捕捉这些异常,但由于这类异常发生后无法让程序恢复运行,因此通常也不需要try…catch…finally语句块捕捉。

Error、RuntiomeException及其子类都称为unchecked exception(非检异常),Java程序设计语言并不要求通过try…catch…finally语句块捕捉unchecked exception,

 

【例题】

Given:
public class Threads2 implements Runnable {
 public void run() {
    System.out.println("run.");
   throw new RuntimeException("Problem");
  }
 public static void main(String[]args) {
    Thread t = new Thread(newThreads2());
    t.start();
    System.out.println("End ofmethod.");
  }
}
Which two can be results? (Choose two.)
A. java.lang.RuntimeException: Problem
B. run.
java.lang.RuntimeException: Problem
C. End of method.
java.lang.RuntimeException: Problem
D. End of method.
run.
java.lang.RuntimeException: Problem
E. run.
java.lang.RuntimeException: Problem
End of method.
【Answer】 DE

【例题辨析】

(1)run()方法有语句:

throw new RuntimeException("Problem");

而主程序没有捕捉该异常,似乎有错,但RuntimeException属于unchecked exception,按Java语法规则并不需要捕捉,因此可以编译运行,但运行时抛出该异常后将显示如下信息并中止执行:

Exception in thread "Thread-0"run.

java.lang.RuntimeException: Problem

      atThreads2.run(Threads2.java:7)

      atjava.lang.Thread.run(Unknown Source)

(2) 线程启动后,实际运行时间点是由系统决定的,因此System.out.println("End of method.");可能先于线程中run()方法执行,也可能在run()方法之后执行,因此正确答案应该是DE。
1 0