Dart:处理来自另一个包的异常

loading...


1

我正在尝试处理我正在导入的包中的异常(不是我编写的包) .

例如,第三方包中的代码是

Future<Map<String, double>> getLocation() => _channel
  .invokeMethod('getLocation')
  .then((result) => result.cast<String, double>())

如果我在一个try / catch中将我自己的项目/代码中的一个调用包装到 getLocation() ,那么它将不会通过catchError转储它 .

的确,如果我编辑第三方文件,并添加

.catchError(( e ) { print( 'In getLocation package error' + e.toString() );});

这 grab 了例外

但是,该代码不是我编写的包,我对编辑该文件犹豫不决 . 当然我可以建议一个更改请求,但是当它不在你不维护的其他包的内部时,是否还有其他方法可以解决这些异步错误?

我已经试过了

try { 
  var test = location.getLocation(); 
} catch(e) {
  print (e.toString());
}

但这并没有捕获它,只有我已经入侵的第三部分代码中的catchError .

1回答

  • 1

    最简单的方法是使用 async / awaittry / catch

    Future<Map<String, double>> getLocation() async { 
      try {
        var test = await location.getLocation(); 
      } catch (e) {
        print(e.toString());        
      }
    }
    

loading...

评论

暂时没有评论!