You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Kotlin版OpenAI API客户端时的异常捕获相关问题

关于OpenAI Kotlin客户端语音转文本的异常问题

1. openAI.transcription(transcriptionRequest)是否会抛出异常?

会抛出异常。虽然方法签名(Code B)没有显式声明抛出异常,但Kotlin不区分受检异常和非受检异常,这个suspend函数在以下场景会抛出异常:

  • 网络请求失败:比如无网络、连接超时
  • API返回错误:比如密钥无效、音频格式不支持、额度耗尽、请求参数错误
  • IO错误:比如指定的音频文件不存在、无法读取文件
  • 客户端内部处理错误

抛出的异常主要包括OpenAIException(客户端定义的API相关异常,包含错误码、错误信息)、IOException(IO相关问题)等。

2. 崩溃时如何获取错误信息?

用try-catch块包裹调用代码,捕获具体异常并提取信息。示例代码如下:

val apiKey = "sk-..."
val openAI = OpenAI(apiKey)

val transcriptionRequest = TranscriptionRequest(
    audio = FileSource(path = mInfo.soundFilename.toPath(), fileSystem = FileSystem.SYSTEM),
    model = ModelId("whisper-1"),
)

try {
    val transcription = openAI.transcription(transcriptionRequest)
    mInfo.text = transcription.text
} catch (e: OpenAIException) {
    // 处理API相关错误,获取错误码、详情
    val errorMessage = e.message ?: "未知API错误"
    val apiError = e.error // 包含API返回的完整错误对象,可查看更多细节
    // 可在此处记录日志或提示用户
} catch (e: IOException) {
    // 处理IO错误,比如文件不存在、读取失败
    val ioErrorMsg = "文件读取或网络IO错误:${e.message}"
} catch (e: Exception) {
    // 兜底处理其他未预料的异常
    val unknownError = "未知错误:${e.message}"
    // 打印堆栈信息方便调试
    Log.e("TranscriptionError", "语音转文本失败", e)
}

通过分类型捕获异常,可以精准定位问题:

  • OpenAIException:直接获取API返回的业务错误信息,比如密钥无效、音频时长超限等
  • IOException:排查文件路径正确性、文件读取权限,或网络连接状态
  • 通用Exception:处理其他意外情况,打印堆栈信息可快速定位调试

内容的提问来源于stack exchange,提问作者HelloCW

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 01:12:06