public class TestExceptions extends Exception {
public static void main(String[] args)
{
String test = "no";
try {
System.out.println("start try");
doRisky("no");
System.out.println("end try");
} catch(ScaryException se) {
System.out.println("scaryexception");
} finally {
System.out.println("finally") ;
}
System.out.println("end of main");
}
static void doRisky(String test) throws ScaryException {
System.out.println("start risky");
if ("yes".equals(test)) {
throw new ScaryException();
}
System.out.println("end risky");
return;
}
}
このコードは機能しません。エラー:シンボルを見つけることができません。これはHead First Java Bookの例です。Javaで独自の例外を作成する
クラスの名前をTestExceptionsからScaryExceptionとして変更すると、正常に動作しています。それはなぜそうですか? カスタマイズ例外の場合に投げている例外と同じクラス名を持つ必要がありますか?
はい、必要です。 'TestExceptions'を使いたい場合は、この行を' throw new TestException(); ' –
に変更してください:*** ScaryException ***はあなたのJDKにありますか? –
クラスの定義と使用する場所に同じ名前を使用する必要があります。これは特別な例外ではありません。これはプログラミングの基本です – Jens