如何在调用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