web-dev-qa-db-ja.com

Thread.sleep()の呼び出しで未処理の例外のコンパイルエラーを修正するにはどうすればよいですか?

私はJavaが初めてであり、プログラミングに初めての経験があります(Javaはおそらく最大のアイデアではなかったと思います。)プログラムに一時停止を追加しようとしても、常にエラーが発生します。単純なカウントプログラムを実行していて、各数値の間に1秒の遅延を追加したいのがこれまでのコードです。

_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」と言います。

23
Mr.Crippled

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

関連

56
Mark Byers