1. ホーム
  2. java

[解決済み] エラーの修正 未報告の例外 InterruptedException

2022-02-16 22:41:03

質問

私はJavaの初心者です。Javaプログラムを待たせる方法を検索したところ Thread.sleep() メソッドを使用します。しかし、これを実行するとエラーになります。

error: 未報告の例外 InterruptedException; キャッチするか、スローするように宣言しなければなりません。

を追加して修正しました。 throws InterruptedException をメソッド宣言に追加したところ、動作するようになりました。

しかし、そのメソッドを呼び出すと、またエラーが発生しました。throwとcatchブロックを使えと言われますが、まだやり方がよくわかりません。誰か助けてくれませんか?

とりあえず、Draw.javaのコード(sleep()メソッド付き)。

package graphics.utilities;

public class Draw {
  public static void DS(int[] c)
    throws InterruptedException {
    \\ .. Drawing Algorithms
    Thread.sleep(2000);
    \\ .. More Drawing Algorithms
  }
}

そしてSquare.javaで(DS()を呼び出す)。

package graphics.shapes;

import graphics.utilities.*;

public class Square implements Graphics {
  int x1,y1,s;
  public Square(int x1,int y1,int s) {
    this.x1 = x1;
    this.y1 = y1;
    this.s = s;
  }
  public void GC() {
    System.out.printf("Square Coordinates:%n Start Point:%n  x: %d%n  y: %d%n Height/Width: %d%n%n" , this.x1,this.y1,this.s);
  }
  public void D() {
    int x2 = x1 + s;
    int y2 = y1;
    int x3 = x1 + s;
    int y3 = y1 + s;
    int x4 = x1;
    int y4 = y1 + s;

    int[] c = {x1,y1,x2,y2,x3,y3,x4,y4};
    Draw.DS(c);
  }
}

ありがとうございます。

解決方法は?

この例では、例外の受け渡しをコールチェーン上で行う方法を示しています(メソッドのコールチェーン上)。このために、あなたのメソッド宣言はthrows InterruptedExceptionを含んでいます。

別の方法として 発生したメソッドで例外を処理する を追加してください。

try 
{
    Thread.sleep(2000);
} 
catch(InterruptedException e)
{
     // this part is executed when an exception (in this example InterruptedException) occurs
}

を追加した後 try {} catch() {} ブロックを作成します。 throws InterruptedException"を削除しました。 をメソッド DS から削除します。

で他の行を囲むことができます。 try {} catch() {} ブロックを作成します。について読む Java の例外 .