【发布时间】:2020-12-04 21:32:11
【问题描述】:
这可能很明显,但我仍然无法理解 throw 和 rethrow 之间的区别,什么时候应该使用它们?
【问题讨论】:
标签: flutter exception dart try-catch throw
这可能很明显,但我仍然无法理解 throw 和 rethrow 之间的区别,什么时候应该使用它们?
【问题讨论】:
标签: flutter exception dart try-catch throw
如果您决定重新引发异常,最好使用
rethrow语句,而不是使用throw引发相同的异常对象。rethrow保留异常的原始堆栈跟踪。另一方面,throw将堆栈跟踪重置为最后抛出的位置。
最大的不同是保留了原始堆栈跟踪。
他们提供了 2 个示例来展示预期用途:
不好:
try {
somethingRisky();
} catch (e) {
if (!canHandle(e)) throw e;
handle(e);
}
好:
try {
somethingRisky();
} catch (e) {
if (!canHandle(e)) rethrow;
handle(e);
}
【讨论】:
throw e 而不是rethrow,stackTrace 会发生什么变化?您能否提供一个个人示例,说明您何时会使用其中任何一种?