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

标签 java exception try-catch throws

在下面的代码中,Thread.sleep(3000);编写在匿名类实例化内部的操作只能使用 try-catch block 来处理。为什么不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() 内部定义的类中定义都没有关系。它们是两种不同的方法。

不过,向 run() 添加 1 是不可能的,因为 Runnable 不允许 run()抛出子句。因此,唯一的解决方案是用 try/catch block 包装 sleep

关于java - 为什么 throws 关键字无法处理字段声明中抛出的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48489973/

相关文章:

java - 比较器返回类型与整数不兼容

java - Okhttp java 11 异常

java - while 循环内的 else 语句损坏

c# - 未处理的异常未被 `Application.ThreadException` 捕获?

java - Jenkins Build 因 SVNException 而失败

wpf - 在 try catch c# 中处理 AccessViolation 异常

java - 我的 DamageReductionAmmounts 导致 Minecraft 崩溃

JavaScript native 方法静默失败而不是抛出错误

try-catch - 在 Swift 2 中,如何将 JSON 解析错误返回到完成 block ?

javascript - "throw new Error()"在 catch block 上下文中捕获