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

PHP Google Calendar API无错误返回:如何捕获无效日历ID的错误JSON

解决Google Calendar ID校验时的错误捕获问题

嘿,这个问题我之前对接Google Calendar API的时候也踩过坑!你现在的代码没有处理异常,当请求不存在的日历ID时,Google的PHP客户端会直接抛出Google_Service_Exception,导致页面崩溃。要拿到错误的JSON,你需要用异常捕获机制来接住这个错误,然后提取里面的响应信息。

核心思路

Google Calendar PHP客户端在请求失败(比如404找不到资源)时,会抛出Google_Service_Exception异常,这个异常里包含了完整的HTTP响应信息,包括原始的错误JSON。我们只需要用try-catch块包裹请求代码,就能捕获并处理这个错误。

修改后的代码示例

$cal = "GOOGLE CALENDAR ID";
$service = new Google_Service_Calendar($client);

try {
    // 尝试获取日历信息
    $calendar = $service->calendars->get($cal);
    // ID存在时的正常逻辑,比如返回日历标题
    echo json_encode([
        'status' => 'success',
        'data' => [
            'calendar_id' => $cal,
            'title' => $calendar->getSummary()
        ]
    ]);
} catch (Google_Service_Exception $e) {
    // 捕获Google服务端返回的错误
    // 获取原始错误响应JSON
    $errorJson = $e->getResponseBody();
    // 设置对应的HTTP状态码(比如404)
    http_response_code($e->getCode());
    // 直接输出Google返回的错误JSON
    echo $errorJson;

    // 如果你想自定义错误格式,也可以解析后重新输出:
    // $errorData = json_decode($errorJson, true);
    // echo json_encode([
    //     'status' => 'error',
    //     'code' => $e->getCode(),
    //     'message' => $errorData['error']['message']
    // ]);
} catch (Exception $e) {
    // 捕获其他非服务端错误(比如网络问题、客户端配置错误)
    http_response_code(500);
    echo json_encode([
        'status' => 'error',
        'message' => '请求失败:' . $e->getMessage()
    ]);
}

关键说明

  • Google_Service_Exception:这是Google API客户端库专门用于抛出服务端错误的异常类,当请求返回4xx/5xx状态码时会触发。
  • getResponseBody():这个方法可以直接获取Google返回的原始错误JSON字符串,比如日历ID不存在时,会返回类似这样的内容:
    {"error":{"code":404,"message":"Not Found","errors":[{"message":"Not Found","domain":"global","reason":"notFound"}],"status":"NOT_FOUND"}}
    
  • getErrors():如果你不想直接用原始JSON,这个方法会返回一个解析后的错误数组,方便你提取具体的错误信息(比如$e->getErrors()[0]['message'])。
  • HTTP状态码:用http_response_code()设置正确的状态码,能让前端或调用方更清晰地判断错误类型。

这样修改后,不管日历ID是否存在,脚本都能正常返回JSON响应,不会再出现页面崩溃的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:59:09