handleDioError method
- DioException error,
- StackTrace stackTrace,
- dynamic params
Dioのエラーをハンドリングし、Sentryにエラーを送信する RepositoryExceptionをReturnする
Implementation
RepositoryException handleDioError(
DioException error, StackTrace stackTrace, dynamic params) {
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,
);
// 他のステータスコードに対しても同様に処理
default:
return RepositoryException(
RepositoryErrorType.unknown,
RepositoryErrorType.unknown.message,
);
}
} else {
return RepositoryException(
RepositoryErrorType.networkError,
RepositoryErrorType.networkError.message,
);
}
}