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