"""沙箱客户端异常。错误码遵循契约字典的 API 标准错误码口径。""" from __future__ import annotations class SandboxError(Exception): """沙箱调用基础异常。""" def __init__(self, message: str, *, code: str = "sandbox_error") -> None: super().__init__(message) self.code = code self.message = message def __str__(self) -> str: return self.message class SandboxUnavailable(SandboxError): """沙箱不可达(网络错误 / 连接超时)。""" def __init__(self, message: str) -> None: super().__init__(message, code="sandbox_unavailable") class SandboxUnauthorized(SandboxError): """授权凭证被拒(HTTP 401)。""" def __init__(self, message: str) -> None: super().__init__(message, code="sandbox_unauthorized") class SandboxBadRequest(SandboxError): """请求参数错误(HTTP 400)。""" def __init__(self, message: str) -> None: super().__init__(message, code="bad_request") class SandboxExecFailed(SandboxError): """沙箱内部执行错误(HTTP 5xx,非 401)。""" def __init__(self, message: str, *, code: str = "exec_failed") -> None: super().__init__(message, code=code) class SandboxNotFound(SandboxError): """目标任务不存在或已完成(HTTP 404),例如取消一个未知 trace_id。""" def __init__(self, message: str) -> None: super().__init__(message, code="not_found")