gpt4 book ai didi

dart - 何时在 Dart 中使用 Future.handleexception 以及何时使用 try-catch

转载 作者:行者123 更新时间:2023-12-01 05:33:44 25 4
gpt4 key购买 nike

我正试图在 Dart 中真正获得 Futures,我注意到几乎我遇到的每个示例都使用 handleException 来处理完成 Future 的异常。然而 API 文档指出“在大多数情况下,没有必要调用 handleException,因为如果 future 的值被消耗,与此 Future 关联的异常将自然传播。只有在需要执行一些特殊的本地异常处理相关时才调用 handleException到这个特定的 Future 的值(value)。”

那么我什么时候需要“特殊的本地异常处理”呢?有人可以更详细地解释一下吗?是否存在一些我无法通过让异常传播而轻易运行的代码?

最佳答案

Mads Ager 给了我这个答案:

基本上,这相当于在直线代码中使用 try-catch:

int doSomethingElse() {
try {
return thisMightFail();
} catch(e) {
return -1;
}
}

void doSomething() {
int value = doSomethingElse();
// operate on value
}

Futures 是这样的(未测试):

Future<int> doSomethingElse() {
return thisMightFail().transformException((e) => -1);
}

void doSomething() {
doSomethingElse().then((value) {
// operate on value
});
}

所以这是针对局部异常处理而不是全局异常处理。如果您从不使用 handleException 或 transformException,这将对应于始终在非异步代码的顶层处理异常。

关于dart - 何时在 Dart 中使用 Future.handleexception 以及何时使用 try-catch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13392572/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com