1. ホーム

[解決済み】Javaでカスタム例外クラスを定義する最も簡単な方法とは?

2022-04-01 18:30:57

質問

最も簡単な方法で独自の例外クラスを定義しようとしているのですが、このような結果になっています。

public class MyException extends Exception {}

public class Foo {
  public bar() throws MyException {
    throw new MyException("try again please");
  }
}

これは、Javaコンパイラが言っていることです。

cannot find symbol: constructor MyException(java.lang.String)

このコンストラクタを継承する必要があるような気がしていました。 java.lang.Exception ということですね?

どのように解決するのですか?

デフォルトでないコンストラクタを継承するのではなく、クラス内で String を受け取るコンストラクタを定義する必要があります。一般的には super(message) を作成し、親コンストラクタを呼び出すことができます。たとえば、こんな感じです。

public class MyException extends Exception {
    public MyException(String message) {
        super(message);
    }
}