/// Exception de base pour l'application abstract class AppException implements Exception { final String message; final String? code; const AppException(this.message, [this.code]); @override String toString() => 'AppException: $message${code != null ? ' (Code: $code)' : ''}'; } /// Exception serveur class ServerException extends AppException { const ServerException(super.message, [super.code]); @override String toString() => 'ServerException: $message${code != null ? ' (Code: $code)' : ''}'; } /// Exception de cache class CacheException extends AppException { const CacheException(super.message, [super.code]); @override String toString() => 'CacheException: $message${code != null ? ' (Code: $code)' : ''}'; } /// Exception de réseau class NetworkException extends AppException { const NetworkException(super.message, [super.code]); @override String toString() => 'NetworkException: $message${code != null ? ' (Code: $code)' : ''}'; } /// Exception d'authentification class AuthException extends AppException { const AuthException(super.message, [super.code]); @override String toString() => 'AuthException: $message${code != null ? ' (Code: $code)' : ''}'; } /// Exception de validation class ValidationException extends AppException { const ValidationException(super.message, [super.code]); @override String toString() => 'ValidationException: $message${code != null ? ' (Code: $code)' : ''}'; }