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

我是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编译器说,“未报告的exceptionInterruptedException;必须被捕获或声明被抛出”,Eclipse说,“未处理的exception类型InterruptedException”

Thread.sleep可以抛出InterruptedException,这是一个经过检查的exception。 必须捕获并处理所有已检查的exception,否则您必须声明您的方法可以抛出exception。 无论是否实际抛出exception,都需要这样做。 不声明您的方法可以抛出的已检查exception是编译错误。

你需要抓住它:

 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 

有关

  • 课程 – 例外
  • Java的Thread.sleep什么时候抛出InterruptedException?
  • Java理论与实践:处理InterruptedException

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

只需将您的第5行更改为:

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