如何修复调用 Thread.sleep() 时未处理的异常的编译错误?

我是Java的新手,对编程也有点陌生(我知道直接进入Java可能不是最好的主意),无论我如何尝试在程序中添加暂停,我都会不断收到错误。我正在做一个简单的计数程序,并希望在每个数字之间添加一秒钟的延迟,这是我到目前为止的代码:

import java.lang.*;

public class Counter
{
    public static void main(String[]args)
    {
        int i;

        for (i = 0; i <= 10; i++)
        {
            Thread.sleep(1000);
            System.out.println(i);
        }
        System.out.println("You can count to ten.");
    }
}

调用 将不会编译。编译器说,“未报告的异常中断异常;必须被捕获或声明为被抛出“,Eclipse 说,”未处理的异常类型 InterruptedException”Thread.sleep()javac


答案 1

Thread.sleep 可以引发一个 InterruptedException,这是一个已检查的异常。必须捕获并处理所有选中的异常,否则必须声明您的方法可以抛出它。无论是否实际引发异常,都需要执行此操作。未声明方法可以引发的已检验异常是编译错误。

你要么需要抓住它:

try {
    Thread.sleep(1000);
} catch (InterruptedException e) {
    e.printStackTrace();
    // handle the exception...        
    // For example consider calling Thread.currentThread().interrupt(); here.
}

或者声明你的方法可以抛出一个:InterruptedException

public static void main(String[]args) throws InterruptedException

相关


答案 2

您可以摆脱第一行。您不需要import java.lang.*;

只需将第 5 行更改为:

public static void main(String [] args) throws Exception

推荐