class AppException(Exception):
    """Exceção base para a aplicação"""
    def __init__(self, message, status_code=400):
        self.message = message
        self.status_code = status_code
        super().__init__(self.message)

class AuthenticationError(AppException):
    """Exceção para erros de autenticação"""
    def __init__(self, message="Erro de autenticação"):
        super().__init__(message, status_code=401)

class AuthorizationError(AppException):
    """Exceção para erros de autorização"""
    def __init__(self, message="Acesso não autorizado"):
        super().__init__(message, status_code=403)

class ResourceNotFoundError(AppException):
    """Exceção para recursos não encontrados"""
    def __init__(self, message="Recurso não encontrado"):
        super().__init__(message, status_code=404)

class ValidationError(AppException):
    """Exceção para erros de validação"""
    def __init__(self, message="Erro de validação"):
        super().__init__(message, status_code=422) 