import 'dart:async'; import 'package:chopper/chopper.dart'; import 'dart:io'; import 'api_errors.dart'; class ErrorHandlerInterceptor implements Interceptor { @override FutureOr<Response<BodyType>> intercept<BodyType>( Chain<BodyType> chain) async { try { final response = await chain.proceed(chain.request); if (!response.isSuccessful) { final statusCode = response.statusCode; switch (statusCode) { case 400: case 403: case 405: case 409: throw ExceptionWithMessage("Ошибка: ${response.error.toString()}"); case 401: throw UnauthorisedException(); default: throw Exception("Неизвестная ошибка: ${response.error}"); } } return response; } on SocketException { throw const ExceptionWithMessage( "Сетевая ошибка: Проверьте подключение."); } on ExceptionWithMessage catch (e) { throw ExceptionWithMessage("Сообщение об ошибке: ${e.message}"); } on Exception catch (e) { throw Exception("Общая ошибка: $e"); } } }