java—如何使用继承来捕获不同类型的多个异常,并显示显示它们之间关系的堆栈跟踪?

iszxjhcz  于 2021-07-06  发布在  Java
关注(0)|答案(0)|浏览(171)

我被要求使用继承来创建异常超类(称为exceptiona)和异常子类exceptionb和exceptionc,其中exceptionb继承自exceptiona,exceptionc继承自exceptionb。编写一个程序来演示类型exceptiona的catch块捕获类型exceptionb和exceptionc的异常。
输出应该如下所示

因此,我开始制作这些类并建立它们之间的关系

public class ExceptionA {
    public void ErrorMsg() throws Exception {
        System.out.println("Exception A: Throwing Exception A");
    }
}
public class ExceptionB extends ExceptionA{
    public void ErrorMsg() throws IOException {
        System.out.println("Exception B: Throwing Exception B");
    }
}
public class ExceptionC extends ExceptionB{
    public void ErrorMsg() throws NullPointerException {
        System.out.println("Exception C: Throwing Exception C");
    }
}

这里是主要的方法

public class ExceptionTest {
    public static void main(String args[]) {
        ExceptionC c = new ExceptionC();
        ExceptionB b = new ExceptionB();
        ExceptionA a = new ExceptionA();

        try {
            a.ErrorMsg();
            b.ErrorMsg();
            c.ErrorMsg();
        }
        catch(Exception e) {
            StackTraceElement stackTraceElement[] = e.getStackTrace();
            for(int i = 0; i < stackTraceElement.length; i++) {
                System.err.println(stackTraceElement[i].getFileName() + ":"
                + stackTraceElement[i].getLineNumber() + ">>"
                + stackTraceElement[i].getMethodName() + "()");
            }
            System.out.println(e);
        }

    }
}

问:如何避免创建每个异常对象的示例?就像我做的,我也只是手动调用他们的错误消息?有没有一种方法可以将错误捕获到try块中,并将其传递给超类,从而导致每个子类触发其特定的错误方法?
只是想让你知道这是我一直回避的java类,真的是因为我很懒,我认为我的基本js知识可以帮助我勉强过关。所以我从yt的人那里拼凑出来的一切。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题