pub enum ClaudeError {
Show 13 variants
ApiKeyNotFound,
ApiRequestFailed(String),
ApiHttpError {
status: u16,
body: String,
},
InvalidResponseFormat(String),
AmendmentParsingFailed(String),
PromptTooLarge {
estimated_tokens: usize,
max_tokens: usize,
model: String,
},
RateLimitExceeded,
NetworkError(String),
SubprocessBinaryMissing(String),
SubprocessSpawnFailed(String),
SubprocessTimeout {
secs: u64,
},
SubprocessOutputTooLarge {
limit: usize,
},
SubprocessJsonParseFailed(String),
}Expand description
Claude API specific errors.
Variants§
ApiKeyNotFound
API key not found in environment variables.
ApiRequestFailed(String)
Claude API request failed with error message.
Used where no HTTP status is available (subprocess failures, or an error
the backend could not attribute to a status). Prefer
ClaudeError::ApiHttpError whenever a status is known, so callers can
tell a permanent failure from a retryable one.
ApiHttpError
AI API returned a non-success HTTP status.
Fields
InvalidResponseFormat(String)
Invalid response format from Claude API.
AmendmentParsingFailed(String)
Failed to parse amendments from Claude response.
PromptTooLarge
Prompt exceeds the model’s available input token budget.
Fields
RateLimitExceeded
Rate limit exceeded for Claude API.
NetworkError(String)
Network connectivity error.
SubprocessBinaryMissing(String)
Required subprocess binary is missing from PATH.
SubprocessSpawnFailed(String)
Failed to spawn a subprocess.
SubprocessTimeout
Subprocess exceeded the configured timeout.
SubprocessOutputTooLarge
Subprocess produced more output than the configured cap.
SubprocessJsonParseFailed(String)
Subprocess stdout was not valid JSON.
Implementations§
Source§impl ClaudeError
impl ClaudeError
Sourcepub fn is_transient(&self) -> bool
pub fn is_transient(&self) -> bool
Returns true when retrying the request could plausibly succeed.
Only a non-retryable 4xx is treated as permanent: the request is malformed, unauthorised, or names something that does not exist (a misspelled model, say), so no amount of retrying or falling back will help. Everything else — 5xx, network failures, timeouts, and any error this cannot positively classify — is reported as transient, which preserves the historical fall-back-and-degrade behaviour for errors whose permanence is unproven.
Trait Implementations§
Source§impl Debug for ClaudeError
impl Debug for ClaudeError
Source§impl Display for ClaudeError
impl Display for ClaudeError
Source§impl Error for ClaudeError
impl Error for ClaudeError
1.30.0 · Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()
Auto Trait Implementations§
impl Freeze for ClaudeError
impl RefUnwindSafe for ClaudeError
impl Send for ClaudeError
impl Sync for ClaudeError
impl Unpin for ClaudeError
impl UnsafeUnpin for ClaudeError
impl UnwindSafe for ClaudeError
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<T> ToStringFallible for Twhere
T: Display,
impl<T> ToStringFallible for Twhere
T: Display,
Source§fn try_to_string(&self) -> Result<String, TryReserveError>
fn try_to_string(&self) -> Result<String, TryReserveError>
ToString::to_string, but without panic on OOM.