使用软件包中的代码,我无法捕获该异常。请注意,我想捕获此特定异常。
// from https://pub.dev/packages/url_launcher
_launchURL() async {
const url = 'myscheme://myurl';
if (await canLaunch(url)) {
await launch(url);
} else {
throw 'Could not launch $url';
}
}
// my code
try {
_launchURL();
}
catch (e)
{
// although the exception occurs, this never happens, and I would rather catch the exact canLaunch exception
}
答案 0 :(得分:0)
我会尝试将try catch语句放入函数中。我相信发生的事情是try / catch语句仅适用于函数调用,尽管它是异步的,但我不相信它实际上会尝试并返回异常。
所以解决方案看起来像这样:
_launchURL() async {
try{
const url = 'myscheme://myurl';
if (await canLaunch(url)) {
await launch(url);
} else {
throw 'Could not launch $url';
}
}
catch(e){
//debug e
}
}
// my code
launchURL();
答案 1 :(得分:0)
您可以将 .then()
用于业务逻辑。
对我来说,它用于检查应用是否可以在设备上打开。
可以是下面的解决方案,
--> url_launcher: ^6.0.2
--> https://pub.dev/packages/url_launcher
launch(appLink).then(
(bool isLaunch) {
print('isLaunch: $isLaunch');
if (isLaunch) {
// Launch Success
} else {
// Launch Fail
}
},
onError: (e) {
print('onError: $e');
},
).catchError(
(ex) => print('catchError: $ex'),
);
为我工作。