#flutter #dart
#flutter #dart
Вопрос:
Я пытаюсь перехватить все необработанные исключения в моем приложении Flutter. Вот мой main.dart:
void main() async {
FlutterError.onError = (FlutterErrorDetails details) {
print("FlutterError.onError");
};
try {
runZoned<Future<void>>(
() async {
runApp(App());
},
onError: (dynamic error, StackTrace stackTrace) {
print("runZoned.onError");
},
);
} catch (ex) {
print("main.catch");
}
}
… однако ни один из этих методов не работает, и мое приложение выдает следующее при запуске в симуляторе iOS:
[VERBOSE-2:ui_dart_state.cc(166)] Unhandled Exception: SocketException: OS Error: Connection refused, errno = 61, address = localhost, port = 57562
… как мне перехватить это исключение?
Ответ №1:
Хорошо, я решил это. Часть моей логики инициализации находилась за пределами runZoned
блока. Я неправильно предположил, что все, что было необходимо внутри runZoned
, — это вызов runApp
. Я поместил все внутрь runZoned
, и теперь он правильно улавливает ошибки.