【问题标题】:flutter catching errors of nested async methods捕捉嵌套异步方法的错误
【发布时间】:2018-06-04 20:37:26
【问题描述】:

我有这个方法。

asyncFunction1() async {
  Firestore.instance.runTransaction((transaction){
    var first = await transaction.something;
    var second = await secondInside();
  });
}

现在我想调用这个方法,并捕捉里面发生的每一个错误。我将如何传播错误,以便

try {asyncFunction1()} catch(e){}

捕获在 runTransaction 中发生的所有错误?

【问题讨论】:

  • 你看到不同的行为了吗?

标签: dart flutter futuretask


【解决方案1】:

您的内部函数缺少async 才能使用await。加的话可以用try/catch

asyncFunction1() {
  Firestore.instance.runTransaction((transaction) async {
    try {
      var first = await transaction.something;
      var second = await secondInside();
    } catch(e) {
      ...
    }
  });
} 

【讨论】:

  • 您能否也举个例子说明如何在上述异步函数的未来实例中捕获此错误?谢谢
  • 对不起,我不明白你的问题。你只需要等待电话并用try/catch包装它。
  • 为混乱道歉。我的意思是,如果您已将其分配给变量: Future asyncFunction = asyncFunction1();当我们添加 asyncFunction.catchError((error){}) 时,这是否可以捕获上面块中已经捕获的异常?
  • 您为什么要这样做?我仍然认为我不明白这个问题,但catchError 是处理异步代码异常的规范方式,try/catch 只能与async/await 一起使用。
  • 我的主要原因是试图理解未来和异步函数之间的关系。也许我的例子有点混乱。请让我再举一个:Future asyncFunction async{ try{...}catch{} } Future asyncInstance = asyncFunction; asyncInstance.catchError((错误){});嗯,代码有点难读,也许我应该为它创建一个问题。
猜你喜欢
  • 2015-03-28
  • 2022-01-14
  • 2018-11-30
  • 2016-01-26
  • 2012-07-31
  • 1970-01-01
相关资源
最近更新 更多