捕获异常,重新抛出断言

时间:2018-06-11 06:29:59

标签: java

考虑以下示例。这被认为是一种不好的做法吗?

注意:我知道重新抛出异常是可以的,但断言错误呢?

public static main(){
    try {
        doSmth();
    } catch (WhateverException we) {
        throw new AssertionError(e.getMessage());
    }
}

public static void doSmth() throws WhateverException { }

1 个答案:

答案 0 :(得分:2)

如果异常表明对您的代码是致命的情况,那么在响应异常时抛出错误并不是一种坏习惯。但是:

  • 没有必要特别使用AssertionError。我的意思是,如果你这样做很好,因为没有人会catch一个,但你应该考虑只做Error,这样有人就不会去寻找assert他们假设的陈述引起了它。
  • 当链接这样的throwable时,总是使用旧的异常来构造新的异常:throw new AssertionError(we)。这将保持旧的堆栈跟踪。您可以(也应该)传递自定义消息。