Перехват необработанного исключения в Flutter

#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 , и теперь он правильно улавливает ошибки.