What are Dart Zones and how are they used for error handling?
TL;DR: Zones provide a context for asynchronous code that allows overriding behaviors like error handling, scheduleMicrotask, and print. runZonedGuarded is the recommended way to catch all uncaught async errors in Flutter.
Full Answer
Every async operation inherits the zone it was created in. Zones enable global error handling — catching errors from Futures and async callbacks that would otherwise be lost.
The standard Flutter error handling setup uses both FlutterError.onError (for Flutter framework errors) and runZonedGuarded (for Dart async errors not caught by the framework).
Code Examples
All unhandled errors (Flutter + Dart) are captured and sent to Crashlytics.
Interview Tip
runZonedGuarded catches errors that slip past try/catch and FlutterError.onError — like errors thrown in Timer callbacks, Stream listeners, or Future.microtask that nobody catches.