首页 > 解决方案 > 覆盖 fillInStackTrace() 的正确方法是什么?

问题描述

我想重写fillInStackTrace作为性能改进,因为我的异常不需要堆栈跟踪。这样做的正确方法是什么?

第一个方法super()在构造函数中调用,而第二个没有。这有什么不同吗?

如果我super()在构造函数中调用,会fillInStackTrace调用被覆盖的,还是会fillInStackTrace调用超类中的?至

我相信这两种方法都是正确的(在这种情况下最好调用super),但我想确定。

方法一

public class MyException extends Exception {
    public MyException() {
        super();
    }

    @Override
    public Throwable fillInStackTrace() {
        return this;
    }
}

方法二

public class MyException extends Exception {
    public MyException() {}

    @Override
    public Throwable fillInStackTrace() {
        return this;
    }
}

标签: javainheritanceexceptionoverriding

解决方案


推荐阅读