为什么throws关键字无法处理字段声明中抛出的异常

时间:2018-01-28 18:38:54

标签: java exception-handling try-catch throws

在下面的代码中,只能使用try-catch块处理在匿名类实例化中编写的Thread.sleep(3000);。为什么throws InterruptedException子句不允许异常传播?

public static void main(String[] args) throws InterruptedException {
    Runnable task = new Runnable() {
        public void run() {
            // below line explicitly need to be handled using try-catch. throws keyword does not work here
            Thread.sleep(3000);         
        }
    };
}

1 个答案:

答案 0 :(得分:2)

run()方法缺少throws InterruptedException子句。 main()有一个,run()main()内定义的类中定义并不重要。他们是两种不同的方法。

不可能在run()中添加一个,因为Runnable不允许run()拥有throws子句。因此,唯一的解决方案是使用try / catch块包装sleep