首页 > 解决方案 > 在 Flutter 中捕获未处理的异常

问题描述

我试图在我的 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

...我如何捕捉到这个异常?

标签: flutterdart

解决方案


好的,我已经解决了这个问题。我的一些初始化逻辑在runZoned块之外。我错误地认为里面需要runZoned的只是调用runApp. 我已经把所有东西都放在里面了runZoned,它现在可以正确地捕捉到错误了。


推荐阅读