onError method

  1. @override
void onError(
  1. DioException err,
  2. ErrorInterceptorHandler handler
)
override

Called when an exception was occurred during the request.

Implementation

@override
void onError(
  DioException err,
  ErrorInterceptorHandler handler,
) {
  if (level.isNone) return handler.next(err);

  final requestId = err.requestOptions.extra['requestId'] ?? 'unknown';

  _log('┌──── Error [$requestId] ──────────────────────────────');
  _log('│ ${err.requestOptions.method} ${err.requestOptions.uri}');
  _log('│ Type: ${err.type.name}');
  _log('│ Message: ${err.message}');

  if (err.response != null) {
    _log('│ Status: ${err.response?.statusCode}');

    if (level.includesBody && err.response?.data != null) {
      final data = _redactData(err.response?.data);
      _log('│ Error Data: $data');
    }
  }

  if (level.includesBody) {
    _log('│ Stack Trace:');
    final stackLines = err.stackTrace.toString().split('\n');
    for (var line in stackLines.take(5)) {
      // Show first 5 lines
      _log('│   $line');
    }
  }

  _log('└──────────────────────────────────────────────────────');

  handler.next(err);
}