onError method

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

Called when an exception was occurred during the request.

Implementation

@override
void onError(DioException err, ErrorInterceptorHandler handler) {
  super.onError(err, handler);
  if (!settings.enabled) {
    return;
  }
  final accepted = settings.errorFilter?.call(err) ?? true;
  if (!accepted) {
    return;
  }
  try {
    final message = '${err.requestOptions.uri}';
    Map<String, dynamic> data;
    if (err.response?.data is Map<String, dynamic>) {
      data = err.response?.data as Map<String, dynamic>;
    } else {
      data = {'data': err.response?.data};
    }
    final httpErrorLog = DioErrorLog(
      message,
      method: err.requestOptions.method,
      url: err.requestOptions.uri.toString(),
      path: err.requestOptions.uri.path,
      statusCode: err.response?.statusCode,
      statusMessage: err.response?.statusMessage,
      requestHeaders: err.requestOptions.headers,
      headers: err.response?.headers.map
          .map((key, value) => MapEntry(key, value.toString())),
      body: data,
      settings: settings,
    );
    _iSpectify.logCustom(httpErrorLog);
  } catch (_) {
    //pass
  }
}