51 lines
1.5 KiB
Python
51 lines
1.5 KiB
Python
"""沙箱客户端异常。错误码遵循契约字典的 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")
|