之间有区别吗?
} catch (ExceptionType1 e) {
throw new RuntimeException(e);
}
和
} catch (ExceptionType1 e) {
throw (RuntimeException) e.getCause();
}
如果存在差异,我应该在ExceptionType1中检查什么才能确定哪一个更好?
答案 0 :(得分:1)
有许多不同之处:
throw new RuntimeException(e);
这会在新e
中包含任何异常RuntimeException
,并抛出此RunTimeException
另一方面:
throw (RuntimeException) e.getCause();
这会尝试将任何异常e
的原因强制转换为RuntimeException
。主要区别是:
e
的详细信息,因为您只是尝试抛出其原因(可能为空)RuntimeException
继承而且可能无法转换,在这种情况下会发生ClassCastException
。