logo

Javaカスタム例外

Java では、Exception クラスの派生クラスである独自の例外を作成できます。独自の例外を作成することは、カスタム例外またはユーザー定義例外と呼ばれます。基本的に、Java カスタム例外は、ユーザーのニーズに応じて例外をカスタマイズするために使用されます。

InvalidAgeException クラスが Exception クラスを拡張する例 1 を考えてみましょう。

カスタム例外を使用すると、独自の例外とメッセージを作成できます。ここでは、スーパークラス、つまり作成したオブジェクトの getMessage() メソッドを使用して取得できる例外クラスのコンストラクターに文字列を渡しています。

このセクションでは、Java プログラムでカスタム例外がどのように実装され、使用されるかを学びます。

カスタム例外を使用する理由

Java 例外は、プログラミング中に発生する可能性のある一般的なタイプの例外をほぼすべてカバーします。ただし、場合によってはカスタム例外を作成する必要があります。

カスタム例外を使用する理由のいくつかを次に示します。

  • 既存の Java 例外のサブセットをキャッチして特定の処理を提供する。
  • ビジネス ロジックの例外: これらは、ビジネス ロジックとワークフローに関連する例外です。アプリケーションのユーザーや開発者が正確な問題を理解するのに役立ちます。

カスタム例外を作成するには、java.lang パッケージに属する Exception クラスを拡張する必要があります。

次の例を考えてみましょう。ここでは、WrongFileNameException という名前のカスタム例外を作成します。

ubuntu ビルドの必需品
 public class WrongFileNameException extends Exception { public WrongFileNameException(String errorMessage) { super(errorMessage); } } 

注: エラー メッセージとして文字列を受け取るコンストラクターを作成する必要があります。これは親クラス コンストラクターと呼ばれます。

例 1:

Java カスタム例外の簡単な例を見てみましょう。次のコードでは、InvalidAgeException のコンストラクターは文字列を引数として受け取ります。この文字列は、super() メソッドを使用して親クラス Exception のコンストラクターに渡されます。また、Exception クラスのコンストラクターはパラメーターを使用せずに呼び出すことができ、super() メソッドの呼び出しは必須ではありません。

TestCustomException1.java

 // class representing custom exception class InvalidAgeException extends Exception { public InvalidAgeException (String str) { // calling the constructor of parent Exception super(str); } } // class that uses custom exception InvalidAgeException public class TestCustomException1 { // method to check the age static void validate (int age) throws InvalidAgeException{ if(age <18){ throw an object of user defined exception new invalidageexception('age is not valid to vote'); } else { system.out.println('welcome main method public static void main(string args[]) try calling the validate(13); catch (invalidageexception ex) system.out.println('caught exception'); printing message from invalidageexception system.out.println('exception occured: ' + ex); system.out.println('rest code...'); < pre> <p> <strong>Output:</strong> </p> <img src="//techcodeview.com/img/exception-handling/13/java-custom-exception.webp" alt="Java Custom Exception"> <h3>Example 2:</h3> <p> <strong>TestCustomException2.java</strong> </p> <pre> // class representing custom exception class MyCustomException extends Exception { } // class that uses custom exception MyCustomException public class TestCustomException2 { // main method public static void main(String args[]) { try { // throw an object of user defined exception throw new MyCustomException(); } catch (MyCustomException ex) { System.out.println(&apos;Caught the exception&apos;); System.out.println(ex.getMessage()); } System.out.println(&apos;rest of the code...&apos;); } } </pre> <p> <strong>Output:</strong> </p> <img src="//techcodeview.com/img/exception-handling/13/java-custom-exception-2.webp" alt="Java Custom Exception"> <hr></18){>

出力:

Javaカスタム例外