multicatch (Java 7 以降) を使用してカスタム例外クラスを作成しています。これは私が作成したクラスです。次のコードを参照してください。
public class CustomException extends Exception{
public CustomException() {
System.out.println("Default Constructor");
}
public CustomException(ArithmeticException e, int num){
System.out.println("Divison by ZERO! is attempted!!! Not defined.");
}
public CustomException(ArrayIndexOutOfBoundsException e, int num){
System.out.println("Array Overflow!!!");
}
public CustomException(Exception e, int num){
System.out.println("Error");
}
上記のクラスは、次のクラスによって拡張されます。
import java.util.Scanner;
public class ImplementCustomException extends CustomException {
public static void main(String[] args) throws CustomException {
int num = 0;
System.out.println("Enter a number: ");
try(Scanner in = new Scanner(System.in);){
num = in.nextInt();
int a = 35/num;
int c[] = { 1 };
c[42] = 99;
}
catch(ArithmeticException|ArrayIndexOutOfBoundsException e){
throw new CustomException(e, num);
}
}
}
これを実行しようとするたびに、「例外」を持つ同じコンストラクターが呼び出されます。なぜそれが起こっているのですか?
ただし、マルチキャッチ構文を次のコードに置き換えると。期待どおりに動作しています。
catch(ArithmeticException ex){
CustomException e = new CustomException(ex, num);
throw e;
}
catch(ArrayIndexOutOfBoundsException ex){
CustomException e = new CustomException(ex, num);
throw e;
}
マルチキャッチを使用して必要な例外をスローするために私ができる変更を手伝ってください。