検査例外|Javaから楽しく学ぶ!ゲームプログラミング専門学校

Javaから楽しく学ぶ!ゲームプログラミング専門学校

ゲームプログラミングとはその名のとおりゲームのプログラムを作ることを指します。『Javaから楽しく学ぶ!ゲームプログラミング専門学校』ではゲームプログラミングについて、実際にゲームプログラムをJAVAプログラミング言語を使用し、作成していきながら詳しく解説していきます。

検査例外

Javaには検査例外と呼ばれる例外があります。

まずは下記サンプルを見てください。
public class CarRun implements Runnable{
private String carName;

public CarRun(String carName){
this.carName = carName;
}

public static void main(String[] args){
CarRun car1 = new CarRun("インサイト");
CarRun car2 = new CarRun("プリウス");

Thread th1 = new Thread(car1);
Thread th2 = new Thread(car2);
th1.start();
th2.start();

}

public void run(){
for(int i = 0; i < 5; i++){
Thread.sleep(1000);
System.out.println(carName + " : " + i + "回目の処理です。");
}
}
}

【コンパイル結果】
CarRun.java:21: 例外 java.lang.InterruptedException は報告されません。スローする
にはキャッチまたは、スロー宣言をしなければなりません。
Thread.sleep(1000);
^
エラー 1 個


このサンプルコードをコンパイルすると上記のエラーが出て、コンパイルに失敗します。
しかし、エラー箇所のまわりのコードを見ても間違ってるところはないように見えます。

実際、サンプルコードにおかしなところはありません。

では、なぜコンパイルに失敗したのか。

実は、Threadクラスのsleep()メソッドを呼び出す場合、tryブロックで囲ってやらないといけないというルールがあります。
これは、sleep()メソッドがthrows節で宣言されているためです。
public static void sleep(long millis)
thorows InterruptedException

throws節で宣言されているメソッドを呼び出す場合、必ずtryブロックで囲ってやる必要があり、それを怠るとコンパイラはエラーを返します。
            try{
Thread.sleep(1000);
}catch(Exception e){}


このように例外処理を強制される例外を「検査例外」と呼びます。
トラックバック:0Edit
Copyright © Javaから楽しく学ぶ!ゲームプログラミング専門学校 All Rights Reserved.
当サイトのテキストや画像等すべての転載転用・商用販売を固く禁じます