首页 > 解决方案 > 捕获异常,重新抛出断言

问题描述

考虑以下示例。它被认为是一种不良做法吗?

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

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

public static void doSmth() throws WhateverException { }

标签: java

解决方案


如果异常表明对您的代码来说是致命的情况,那么抛出错误以响应异常并不是一个坏习惯。然而:

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

推荐阅读