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



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

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

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() );});

这会捕获异常

然而,该代码不是我编写的程序包,我对编辑该文件犹豫不决。当然,我可以建议一个更改请求,但当它在您不维护的其他包内部时,有没有其他方法可以绕过这些异步错误?

我已经试过了

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

但这并没有捕捉到它,只有我入侵的第三部分代码中的catchError捕捉到了它。

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

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

相关内容

最新更新