class ServerException implements Exception { final String message; final int? statusCode; const ServerException({required this.message, this.statusCode}); @override String toString() => 'ServerException: $message (status: $statusCode)'; } class NetworkException implements Exception { final String message; const NetworkException({this.message = 'Network connection failed'}); @override String toString() => 'NetworkException: $message'; } class ValidationException implements Exception { final String message; final Map? errors; const ValidationException({required this.message, this.errors}); @override String toString() => 'ValidationException: $message'; } class NotFoundException implements Exception { final String message; const NotFoundException({this.message = 'Resource not found'}); @override String toString() => 'NotFoundException: $message'; } class AuthException implements Exception { final String message; const AuthException({required this.message}); @override String toString() => 'AuthException: $message'; } class UnauthorizedException implements Exception { final String message; const UnauthorizedException({this.message = 'Unauthorized'}); @override String toString() => 'UnauthorizedException: $message'; }