Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
演示java中的自定义异常继承_Java_Exception Handling_Multiple Inheritance - Fatal编程技术网

演示java中的自定义异常继承

演示java中的自定义异常继承,java,exception-handling,multiple-inheritance,Java,Exception Handling,Multiple Inheritance,我被要求演示如何在自定义异常上使用继承。有人问我: 创建一个名为MyException的类: -使用继承,创建两个异常类:Exception1和Exception2; -每个类都应该有适当的构造函数,当使用这些构造函数时,它们分别提供相关的消息,例如“异常1”和“异常2” 所以我创建了MyException,它继承了java.lang.Exception: public class MyException extends Exception{ //default constructor pu

我被要求演示如何在自定义异常上使用继承。有人问我: 创建一个名为MyException的类: -使用继承,创建两个异常类:Exception1和Exception2; -每个类都应该有适当的构造函数,当使用这些构造函数时,它们分别提供相关的消息,例如“异常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类中输入什么?

您不应该打印抛出的异常,而是打印
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());
     }
 }

}

谢谢,有道理。但是,我没有从e.getMessage()获得结果。。。我这样设置构造函数:super(message=“Exception1抛出”)。。。我哪里出错了?如果你只调用e.getMessage(),什么都不会发生,你需要打印它,正如我所展示的。如果您按照我展示的那样做,那么您没有正确构建构造函数。我将提供一个完整的示例。我使用System.out.println(e.getMessage());我得到空值。如果你能给我一个完整的例子,那就太好了。解决:我按照你在第一条评论中的建议添加了/“这是故意抛出的!”现在参数被传递了。如果我不传递任何参数,我会得到“null”。谢谢