Java では独自の例外を作成できます。これらはユーザー定義例外またはカスタム例外と呼ばれます。
ユーザー定義の例外を作成するには、上記のクラスのいずれかを拡張します。メッセージを表示するには、toString() メソッドをオーバーライドするか、文字列形式のメッセージをバイパスしてスーパークラスのパラメーター化コンストラクターを呼び出します。
MyException(String msg){ super(msg); } Or, public String toString(){ return " MyException [Message of your exception]"; }
次に、この例外をスローする必要がある他のクラスで、作成したカスタム例外クラスのオブジェクトを作成し、throw キーワードを使用して例外をスローします。
MyException ex = new MyException (); If(condition……….){ throw ex; }
すべての例外は Throwable のサブクラスである必要があります。
Handle ルールまたは Declare ルールによって自動的に強制されるチェック例外を作成する場合は、Exception クラスを拡張する必要があります。
ランタイム例外を作成する場合は、RuntimeException クラスを拡張する必要があります。
次の Java プログラムは、カスタム チェック例外を作成する方法を示しています。
オンライン デモ
import java.util.Scanner; class NotProperNameException extends Exception { NotProperNameException(String msg){ super(msg); } } public class CustomCheckedException { private String name; private int age; public static boolean containsAlphabet(String name) { for (int i = 0; i < name.length(); i++) { char ch = name.charAt(i); if (!(ch >= 'a' && ch <= 'z')) { return false; } } return true; } public CustomCheckedException(String name, int age){ if(!containsAlphabet(name)&&name!=null) { String msg = "Improper name (Should contain only characters between a to z (all small))"; NotProperNameException exName = new NotProperNameException(msg); throw exName; } this.name = name; this.age = age; } public void display(){ System.out.println("Name of the Student: "+this.name ); System.out.println("Age of the Student: "+this.age ); } public static void main(String args[]) { Scanner sc= new Scanner(System.in); System.out.println("Enter the name of the person: "); String name = sc.next(); System.out.println("Enter the age of the person: "); int age = sc.nextInt(); CustomCheckedException obj = new CustomCheckedException(name, age); obj.display(); } }
上記のプログラムはコンパイル時に次の例外を生成します。
CustomCheckedException.java:24: error: unreported exception NotProperNameException; must be caught or declared to be thrown throw exName; ^ 1 error
カスタム例外の継承元のクラスを RuntimeException に変更するだけの場合、実行時にスローされます
ライブデモ-->class NotProperNameException extends RuntimeException { NotProperNameException(String msg){ super(msg); } }
上記のプログラムを実行する場合、NotProperNameException クラスを上記のコードに置き換えて実行すると、次の実行時例外が生成されます。
Enter the name of the person: Krishna1234 Enter the age of the person: 20 Exception in thread "main" july_set3.NotProperNameException: Improper name (Should contain only characters between a to z (all small)) at july_set3.CustomCheckedException.<init>(CustomCheckedException.java:25) at july_set3.CustomCheckedException.main(CustomCheckedException.java:41)
以上がJava のカスタム例外の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。