演示自定义异常继承 java

demonstrate custom exceptions inheritance java

有人要求我演示在自定义异常上使用继承。这就是我被问到的: 创建一个名为 MyException 的 class: - 使用继承,创建两个异常classes:Exception1和Exception2; - 每个 class 都应该有适当的构造函数,在使用时它们会提供相关消息,例如分别为“异常 1”和“异常 2”;

所以我创建了 MyException,它继承自 java.lang.Exception:

public class MyException extends Exception{

//default constructor
public MyException() {}

//constructor that accepts a message
public MyException(String message){
    super(message);
}

然后我创建了 Exception1 和 Exception2,但它们是空的

public class Exception1 extends MyException {

}


public class Exception2 extends MyException {

}

尽管有效,但我认为我的方法不正确。 这是我测试它的方法。

//demonstrate use of custom exceptions
try{
    if(true) {throw new Exception1();}
}catch (Exception1 e){
    System.out.println("exception1 thrown");
}

try{
    if(true) {throw new Exception2();}
}catch (Exception2 e){
    System.out.println("exception2 thrown");
}

我怎样才能正确地做到这一点?我应该在 Exception1 和 Exception2 classes 中放入什么?

您不应打印抛出的异常,而应打印 Exception.getMessage() 结果,否则在这种情况下,包含消息的异常没有意义。

try{
    throw new Exception1("This is thrown intentionally");
}catch (Exception1 e){
    System.err.println(e.getMessage());
}

您还可以在异常中添加自定义方法或附加消息,或者,例如,它们可以从更具体的异常中扩展(更好的做法)。

仅此而已。

自定义异常示例:

public class MyException extends Exception {

 public MyException() {

     super();

 }

 public MyException(String msg){

    super(msg);

 }

 public MyException(String msg, Exception cause){
     super(msg, cause);
 }

 public static void main(String[] args) {

     try {

         throw new MyException();

     } catch (Exception e) {

         System.err.println(e.getMessage());
     }
 }

}