回報錯誤

自動回報錯誤

您可以將函式中的錯誤發送至 Error Reporting,方式如下:

Node.js

// These WILL be reported to Error Reporting
throw new Error('I failed you'); // Will cause a cold start if not caught

Python

@functions_framework.http
def hello_error_1(request):
    # This WILL be reported to Error Reporting,
    # and WILL NOT show up in logs or
    # terminate the function.
    from google.cloud import error_reporting

    client = error_reporting.Client()

    try:
        raise RuntimeError("I failed you")
    except RuntimeError:
        client.report_exception()

    # This WILL be reported to Error Reporting,
    # and WILL terminate the function
    raise RuntimeError("I failed you")

@functions_framework.http
def hello_error_2(request):
    # These errors WILL NOT be reported to Error
    # Reporting, but will show up in logs.
    import logging
    import sys

    print(RuntimeError("I failed you (print to stdout)"))
    logging.warning(RuntimeError("I failed you (logging.warning)"))
    logging.error(RuntimeError("I failed you (logging.error)"))
    sys.stderr.write("I failed you (sys.stderr.write)\n")

    # This is considered a successful execution and WILL NOT be reported
    # to Error Reporting, but the status code (500) WILL be logged.
    from flask import abort

    return abort(500)

如需更精細的錯誤報告,請使用 Error Reporting 用戶端程式庫。

您可以在 Google Cloud 控制台的「Error Reporting」中查看回報的錯誤。或是在 Google Cloud 控制台的函式清單選取特定函式,查看該函式回報的錯誤。

由函式所產生的未處理例外狀況,都會顯示在Error Reporting 中。請注意,某些類型的未處理例外狀況 (例如以非同步方式擲回的項目),會在後續函式叫用時導致冷啟動,進而增加函式執行所需的時間。

手動回報錯誤

匯入依附元件

如要透過函式向 Error Reporting 回報錯誤,請從 Cloud Functions 記錄器 SDK 匯入 error 函式:

// All available logging functions
const {
  log,
  info,
  debug,
  warn,
  error,
  write,
} = require("firebase-functions/logger");

正在傳送至「Cloud Logging」

Cloud Functions 記錄器 SDK 的 error 函式會向 Cloud Logging 和 Error Reporting 回報錯誤。如要以結構化資料的形式加入更多錯誤背景資訊,請將錯誤物件做為第二個引數傳遞:

 } catch (err) {
  // Attach an error object as the second argument
  error("Unable to read quote from Firestore, sending default instead",
      err);