使用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
相关产品推荐
相关产品推荐

