为什么 throws 关键字无法处理字段声明中抛出的异常
Why throws keyword cannot handle the exception thrown in field declaration
在下面的代码中,写在匿名 class 实例中的 Thread.sleep(3000);
只能使用 try-catch 块来处理。为什么 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);
}
};
}
run()
方法缺少 throws InterruptedException
子句。 main()
有一个并不重要,run()
是在 main()
内部定义的 class 中定义的也不重要。它们是两种不同的方法。
但是,向 run()
添加一个是不可能的,因为 Runnable
不允许 run()
具有 throws
子句。因此,唯一的解决方案是用 try/catch 块包裹 sleep
。
在下面的代码中,写在匿名 class 实例中的 Thread.sleep(3000);
只能使用 try-catch 块来处理。为什么 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);
}
};
}
run()
方法缺少 throws InterruptedException
子句。 main()
有一个并不重要,run()
是在 main()
内部定义的 class 中定义的也不重要。它们是两种不同的方法。
向 run()
添加一个是不可能的,因为 Runnable
不允许 run()
具有 throws
子句。因此,唯一的解决方案是用 try/catch 块包裹 sleep
。