将新的Runtime Exception与铸造原因引起到RuntimeException之间



之间是否有区别
} catch (ExceptionType1 e) {
    throw new RuntimeException(e);
}

} catch (ExceptionType1 e) {
    throw (RuntimeException) e.getCause();
}

如果有区别,我应该在异常中检查什么才能确定哪个更好?

有很多差异:

 throw new RuntimeException(e);

这包含新的RuntimeException中的任何例外e,然后抛出此RunTimeException


另一方面:

throw (RuntimeException) e.getCause();

这试图将任何例外e原因施放给RuntimeException。主要区别是:

  • 您失去了原始异常e的细节,因为您只尝试将其原因(可能为null)
  • 原因可能不会从RuntimeException继承,也可能无法铸造,在这种情况下,ClassCastException将发生。

最新更新