如果类没有实现方法,则打印调用类和方法

问题描述 投票:0回答:1

说我有

public class A {
    public void myMethod() throws Exception {
    }
}

public class B extends class A {
}

如果我现在有一个

B
的实例并调用
myMethod()
并抛出异常,则堆栈跟踪不包含
B.myMethod()
,因为
B
未实现
myMethod()

我怎样才能以某种方式在日志中打印调用超类?,即使它没有实现该方法。

用例是,如果我有 1000 个扩展 A 的类,并且只有一个类在

myMethod()
中有例外,我看不到是哪一个。

顺便说一句,在

B
中的方法中实现,仅调用
super.myMethod()
不是一个选择,因为这在现有代码库中会花费太多精力。
但也许这是唯一的选择?

java exception extends
1个回答
0
投票

一种选择是在类 A 中包装并重新抛出异常,但打印一条消息,显示调用对象的类。 它可能看起来像这样。

public class A {
    public void myMethod() throws Exception {
        try {
            // Do some stuff
        } catch (Exception e) {
            System.out.println("Exception thrown by " + getClass());
            throw e;
        }
    }
}

这是有效的,因为

getClass()
返回调用对象的类,而不是具有实际调用它的代码的类。

© www.soinside.com 2019 - 2024. All rights reserved.