如何解决Dart投掷和重新投掷有什么区别?
这也许很明显,但是我仍然无法理解throw
和rethrow
之间的区别,以及什么时候应该使用其中两个?
解决方法
如果您决定重新引发异常,则最好使用
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);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。