gpt4 book ai didi

asynchronous - 在返回流的函数中实现异常处理

转载 作者:行者123 更新时间:2023-12-03 02:54:20 26 4
gpt4 key购买 nike

我正在实现一个返回流的函数。我不确定如何实现错误处理,最佳实践是什么?

对于返回 Future 的函数,最佳实践 never to throw a synchronous error .对于返回流的函数也是如此吗?

这是我在想的一个例子:

Stream<int> count() {
var controller = new StreamController<int>();
int i = 0;
try {
doSomethingThatMightThrow();
new Timer.repeating(new Duration(seconds: 1), () => controller.add(i++));
} on Exception catch (e) {
controller.addError(e);
controller.close();
}
return controller.stream;
}

最佳答案

一般来说,Streams 也是如此。主要思想是,用户应该只需要以一种方式处理错误。您的示例将所有错误移动到流中。

在某些情况下,立即错误会更好(例如,您可能会因为编程错误而导致错误并且无论如何都不应该处理,或者如果您想保证 Stream 永远不会产生错误),但是通过流发送错误几乎总是一件好事。

小问题:流通常(也有异常(exception))在有人开始收听之前不会产生任何数据。在您的示例中,您正在启动 Timer,即使您甚至不知道是否会有听众。我猜这个例子被简化了,并不代表你的真实代码,但它是需要注意的。解决方案是使用 StreamController 的回调来暂停和订阅更改。

关于asynchronous - 在返回流的函数中实现异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15701142/

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