如果是sleep,join函数抛出一个Interrupted异常然后为什么catch块没有捕获它们?

时间:2017-05-01 07:28:44

标签: java multithreading exception

这是连接功能:

public static void main(String[] args) {
    Thread t1 = new Thread(new MyRunnable(), "t1");
    Thread t2 = new Thread(new MyRunnable(), "t2");
    Thread t3 = new Thread(new MyRunnable(), "t3");

    t1.start();

    //start second thread after waiting for 2 seconds or if it's dead
    try {
        t1.join(2000);
    } catch (InterruptedException e) {
        System.out.println("In catch");
    }
    t2.start();

我们知道我们必须在try-catch块中放入join函数(和sleep函数),然后当join函数抛出InterruptedException时,为什么In catch没有打印? 它背后的逻辑是什么?

1 个答案:

答案 0 :(得分:3)

java中throws的定义是可以抛出,不会说必须抛出。

异常抛出和捕获机制的目的是允许您处理异常(如果发生),这并不意味着它们将永远发生