앱 어딘가에서 예상 못한 에러가 터져도, 앱이 조용히 죽지 않고 그 에러를 잡아 기록으로 보내게 하는 장치. (일반 개념)

무엇인가

코드 한 덩어리를 감싸면, 그 안에서 난 에러를 한곳에서 잡을 수 있다. runZonedGuarded는 "이 덩어리를 지켜보다가 에러 나면 이 함수로 보내"를 지정한다.

runZonedGuarded(
  () {
    // 앱 실행 (여기서 뭐가 터지든)
  },
  (error, stack) {
    // 여기로 잡혀 온다 → 로그/에러추적 서버로 전송
  },
);

왜 쓰나

React 비유

최상위 ErrorBoundary + window.onerror를 합친 것. "안 잡힌 에러 전부"의 마지막 그물.

보통 3중으로 건다

실전에선 에러 감시를 여러 겹으로 건다:

  1. FlutterError.onError — 위젯(화면)에서 난 에러
  2. PlatformDispatcher.onError — 비동기 에러
  3. runZonedGuarded — 그 외 전부 (마지막 그물)