这可能是显而易见的,但我仍然无法理解两者之间的区别throw
and rethrow
什么时候应该使用其中任何一个?
根据有效飞镖:
如果您决定重新抛出异常,最好使用rethrow
语句而不是使用抛出相同的异常对象throw
. rethrow
保留异常的原始堆栈跟踪。throw
另一方面将堆栈跟踪重置到最后抛出的位置。
最大的区别是原始堆栈跟踪的保留。
他们提供了 2 个示例来展示预期用途:
Bad:
try {
somethingRisky();
} catch (e) {
if (!canHandle(e)) throw e;
handle(e);
}
Good:
try {
somethingRisky();
} catch (e) {
if (!canHandle(e)) rethrow;
handle(e);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)