handleDioError method
Handle Dio errors and convert them to appropriate LLM errors
Implementation
LLMError handleDioError(DioException e) {
switch (e.type) {
case DioExceptionType.connectionTimeout:
case DioExceptionType.sendTimeout:
case DioExceptionType.receiveTimeout:
return TimeoutError('Request timeout: ${e.message}');
case DioExceptionType.badResponse:
final statusCode = e.response?.statusCode;
final responseData = e.response?.data;
if (statusCode != null) {
// Use HttpErrorMapper for consistent error handling
final errorMessage =
_extractErrorMessage(responseData) ?? '$statusCode';
final responseMap =
responseData is Map<String, dynamic> ? responseData : null;
return HttpErrorMapper.mapStatusCode(
statusCode, errorMessage, responseMap);
} else {
return ResponseFormatError(
'HTTP error without status code',
responseData?.toString() ?? '',
);
}
case DioExceptionType.cancel:
return const GenericError('Request cancelled');
case DioExceptionType.connectionError:
return const GenericError('Connection error');
case DioExceptionType.badCertificate:
return const GenericError('SSL certificate error');
case DioExceptionType.unknown:
return GenericError('Unknown error: ${e.message}');
}
}