2012-12-22 3 views
23

私はJavaを初めて使い始めていて、プログラミングには新しいものがあります(私はダイビングをJavaにまっすぐに知っていたのはおそらく最高のアイデアではありませんでした)。そして、私のプログラムに一時停止を追加しようとしても、 。 Thread.sleep()への呼び出しがコンパイルされませんThread.sleep()の呼び出しで未処理例外のコンパイルエラーを修正するにはどうすればよいですか?

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

:私は、単純な集計プログラムを実行すると、ここで、各番号の間に1秒の遅延を追加したいのです、私はこれまで持っているコードです。 「報告されていない例外InterruptedExceptionある;キャッチまたはスローされるように宣言されなければならない」javacコンパイラは、言うとEclipseは、「未処理の例外型InterruptedExceptionある」

+6

そして、そのエラーは何でしょう:あなたはimport java.lang.*;

だけにあなたの5番目の行を変更する必要はありませんか? –

+2

'Thread.sleep()'が 'InterruptedException'をスローする可能性があるため、コンパイルエラーです。 –

+2

@AndrewLogvinov - はい、*私が知っていることは...質問が改善する必要があるという点です) –

答えて

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 

関連

+0

+1 - 初心者のために、おそらく例外についてのOracleチュートリアルへのリンクと、メソッドが投げるかもしれない例外のjavadoc状態を指摘してください。 (**編集:**あなたは私の心を読んでいます) –

+0

ありがとうございました答えるための印を付けましたが、なぜ私は最初に例外を宣言する必要があるのか​​不思議に思ってしまいました。ブライアン、あなたは例外についてのOracleチュートリアルへのリンクを持つことはありませんか? –

+0

@ Mr.Crippledここでポイントを忘れています。宣言は例外をスローすることを意味するのではなく、例外がスローされる可能性があります。したがって、呼び出し元がキャッチし、それに従って処理する必要があります(または、 try/catchブロック)。さて、宣言する必要のないチェックされていない(実行時の)例外もあります。 NullPointerExceptionは未チェックの例外で、宣言する必要はありません。なぜそうなのか?よくチェックされた例外は、それをキャッチしてその上で動作させるか、または呼び出し元に処理させますが、チェックされていない(実行時の)例外を使用すると、ほとんどの場合、システムが失敗することがあります。 – sactiw

-3

あなたは最初の行を取り除くことができます。

public static void main(String [] args) throws Exception 
関連する問題