错误处理

SDK 的错误处理和重试机制。

重试机制

LLM 请求自动带重试逻辑:

import { ClaudeCodeSDK } from 'claude-code-sdk-ts'

const sdk = new ClaudeCodeSDK({
  llm: { provider: 'anthropic', apiKey: process.env.ANTHROPIC_API_KEY! },
  global: {
    maxRetries: 3,     // 最大重试次数
    timeout: 120000,   // 请求超时 (ms)
  },
})

自定义重试

import { withRetry } from 'claude-code-sdk-ts/llm'

const result = await withRetry(
  async () => {
    return await apiCall()
  },
  {
    maxRetries: 5,
    signal: abortController.signal,
    onRetry: (event) => {
      console.log(`重试 ${event.attempt}/${event.maxRetries}, 等待 ${event.delayMs}ms`)
    },
  },
)

AbortSignal 取消

import { ClaudeCodeSDK } from 'claude-code-sdk-ts'

const controller = new AbortController()

// 5 秒后自动取消
setTimeout(() => controller.abort(), 5000)

try {
  const session = sdk.createSession()
  const response = await session.send('Generate a very long story', {
    signal: controller.signal,
  })
} catch (err) {
  if ((err as Error).name === 'AbortError') {
    console.log('请求被取消')
  }
}

错误类型

错误 说明
APIError API 返回错误
RateLimitError 触发速率限制
TimeoutError 请求超时
PermissionError 权限检查未通过
ConfigError 配置验证失败