gpt4 book ai didi

dart - 如何捕获计时器函数调用中抛出的错误?

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

我有类似的代码:

  timer = new Timer(new Duration(milliseconds: 1000), () => (throw new TimeoutException('Callback not invoked!')));

while (timer.isActive){
await new Future.delayed(const Duration(milliseconds: 1), () => "1");
}
print('this should not be reached if the exception is raised');

在其他地方,我有一个异步回调,它调用:

timer.cancel();

在调用回调的情况下,它工作正常,因为回调取消了计时器。

但是,我不太确定在这种情况下如何实际捕获 TimeoutException(如果未取消),因为似乎异常是在与我的主函数不同的范围内引发的。这意味着程序继续执行,即使

有没有办法进行某种 try/catch 或以某种方式处理上述超时异常?或者有更好的方法来做我想做的事情?

使用 dart 1.19.1。

最佳答案

根据超时是 500ms 还是 1500ms,您会得到不同的行为:

   final timer = new Future.delayed(const Duration(milliseconds: 1000), 
() => (throw new Exception('Callback not invoked!')))
.timeout(const Duration(milliseconds: 500));
try {
await timer;
} on TimeoutException catch(e) {
print('this should not be reached if the exception is raised');
} on Exception catch(e) {
print('exception: $e');
}

DartPad

关于dart - 如何捕获计时器函数调用中抛出的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41064796/

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