handleDioError method
Implementation
Future<RepositoryException> handleDioError(
DioException error,
StackTrace stackTrace,
dynamic params,
) async {
final response = error.response;
final request = error.requestOptions.data;
Sentry.captureException(
error,
stackTrace: stackTrace,
withScope: (scope) {
scope.setContexts(
'request_params',
params.toString(),
);
if (request != null) {
scope.setContexts(
'response_request_params',
request.toString(),
);
// scope.setExtra(
// 'response_request_headers', request.headers.toString());
}
if (response != null) {
scope.setExtra('response_data', response.data.toString());
scope.setExtra('response_status', response.statusCode.toString());
scope.setExtra('response_headers', response.headers.map.toString());
}
},
);
if (response != null) {
switch (response.statusCode) {
case 500:
return RepositoryException(
RepositoryErrorType.serverError,
RepositoryErrorType.serverError.message,
);
case 400:
return RepositoryException(
RepositoryErrorType.badRequest,
RepositoryErrorType.badRequest.message,
);
case 401:
return RepositoryException(
RepositoryErrorType.unAothorized,
RepositoryErrorType.unAothorized.message,
);
// 他のステータスコードに対しても同様に処理
default:
return RepositoryException(
RepositoryErrorType.unknown,
RepositoryErrorType.unknown.message,
);
}
} else {
return RepositoryException(
RepositoryErrorType.networkError,
RepositoryErrorType.networkError.message,
);
}
}