前提:Flutter异常指的是Flutter程序Dart代码运行时意外发生的错误事件。我们可以通过try-catch机制来获取它。但是Dart采用时间循环机制不强制要求处理异常处理,各个任务的运行状态是相互独立,即便某个任务出现了异常我们没有捕获到,Dart也不会退出。只是导致当前任务后续的代码不会被执行,用户仍可以继续使用其他功能。
一、App异常
同步异常:可以通过try-catch捕获,异步异常:通过Future的catchError语句捕获。
//使用try-catch捕获同步异常
try {
throw StateError('This is a Dart exception.');
}
catch(e) {
print(e);
}
//使用catchError捕获异步异常
Future.delayed(Duration(seconds: 1))
.then((e) => throw StateError('This is a Dart exception in Future.'))
.catchError((e)=>print(e));
//注意,以下代码无法捕获异步异常
try {
Future.delayed(Duration(seconds: 1))
.then((e) => throw StateError('This is a Dart exception in Future.'))
}
catch(e) {
print("This line will never be executed. ");
}
直接捕获Zone.runZoned方法,Zone表示一个代码执行的环境范围,类似于沙盒,不同沙盒之间是相互隔离的。
runZoned(() {
//同步抛出异常
throw StateError('This is a Dart exception.');
}, onError: (dynamic e, StackTra

本文详细介绍了Flutter中如何捕获和处理同步与异步异常,包括使用try-catch和catchError机制,以及通过Zone进行异常管理。此外,还阐述了Flutter框架异常的处理方式,利用FlutterError.onError回调和Zone的handleUncaughtError方法统一处理框架异常。最后,提到了使用第三方工具如Bugly收集异常日志的重要性。
最低0.47元/天 解锁文章
293

被折叠的 条评论
为什么被折叠?



