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

Twilio Programmable Wireless API异常未被try/catch捕获排查

异常无法捕获的可能原因及解决办法

1. 同步错误发生在try/catch块之外

你代码里的const SID = this.sim.carrierId是在try块执行前运行的,如果this.sim是null或undefined,访问carrierId会直接抛出TypeError,这个错误不在try/catch的覆盖范围内,自然无法被捕获。

解决办法:将SID的获取逻辑移到try块内部:

async getDataUsageForDates(startIsoDate: string, endIsoDate: string): Promise<number> {
    const isoStartDate = new Date(startIsoDate)
    const isoEndDate = new Date(endIsoDate)
    const start = new Date(Date.UTC(isoStartDate.getUTCFullYear(), isoStartDate.getUTCMonth(), isoStartDate.getUTCDate(), 0, 0, 0))
    const end = new Date(Date.UTC(isoEndDate.getUTCFullYear(), isoEndDate.getUTCMonth(), isoEndDate.getUTCDate(), 23, 59, 59))

    try {
        const SID = this.sim.carrierId // 移到try内部
        const usageResponse: UsageRecordInstance[] = await client.wireless.v1.sims(SID)
                                                                 .usageRecords.list({
                start: start,
                end: end
            })

        const usageRecord = usageResponse[0]

        let dataTotal = 0
        if (usageRecord) {
            dataTotal = (usageRecord.data?.total === null) ? 0 : usageRecord.data?.total
        }

        return dataTotal
    } catch (err: any) {
        console.error(err)
        return 0
    }
}

2. Twilio SDK未将HTTP错误转为Promise拒绝

部分SDK会把4xx/5xx这类HTTP错误包装在成功响应中,而非触发Promise拒绝,导致try/catch无法捕获。比如无效SID可能返回404,但Promise仍处于resolved状态,错误信息包含在响应对象里。

解决办法:检查usageResponse或SDK返回的对象是否包含错误字段,手动判断并抛出异常:

// 在获取usageResponse后添加判断
if (usageResponse.error) {
    throw new Error(usageResponse.error.message)
}

或者查看Twilio SDK文档,确认是否需要配置开启错误抛出(部分SDK默认不抛出HTTP错误,需手动启用)。

3. 代码中存在未被覆盖的异步错误

如果client实例本身存在配置问题,或者list()方法内部有未被捕获的异步错误(比如未正确绑定上下文),也可能导致异常逃逸。

解决办法:确保Twilio客户端初始化正确,并且所有异步操作都在try/catch覆盖范围内。同时可以在函数外层添加全局错误捕获(比如使用process.on('unhandledRejection'))排查未被捕获的Promise拒绝。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 14:33:16