"""
Exception handlers comune pentru ROA2WEB
"""
from typing import Any, Dict, Optional

class ROAException(Exception):
    """Exception de bază pentru aplicațiile ROA"""
    def __init__(self, message: str, details: Optional[Dict[str, Any]] = None):
        self.message = message
        self.details = details or {}
        super().__init__(self.message)

class DatabaseException(ROAException):
    """Excepții legate de baza de date"""
    pass

class AuthenticationException(ROAException):
    """Excepții legate de autentificare"""
    pass

class AuthorizationException(ROAException):
    """Excepții legate de autorizare"""
    pass

class ValidationException(ROAException):
    """Excepții legate de validare date"""
    pass