之间是否有区别
} 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
将发生。