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

时间:2012-12-22 18:47:26

标签: java exception-handling checked-exceptions

我是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.");
    }
}

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

2 个答案:

答案 0 :(得分:56)

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

相关

答案 1 :(得分:-3)

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

只需将第5行更改为:

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