演示如何报告错误。
深入探索
如需查看包含此代码示例的详细文档,请参阅以下内容:
代码示例
Go
package tips
import (
"fmt"
"net/http"
"os"
)
// HTTPError describes how errors are handled in an HTTP function.
func HTTPError(w http.ResponseWriter, r *http.Request) {
// An error response code is NOT reported to Error Reporting.
// http.Error(w, "An error occurred", http.StatusInternalServerError)
// Printing to stdout and stderr is NOT reported to Error Reporting.
fmt.Println("An error occurred (stdout)")
fmt.Fprintln(os.Stderr, "An error occurred (stderr)")
// Calling log.Fatal sets a non-zero exit code and is NOT reported to Error
// Reporting.
// log.Fatal("An error occurred (log.Fatal)")
// Panics are reported to Error Reporting.
panic("An error occurred (panic)")
}
Java
import com.google.cloud.functions.HttpFunction;
import com.google.cloud.functions.HttpRequest;
import com.google.cloud.functions.HttpResponse;
import java.io.IOException;
import java.util.logging.Logger;
public class HelloError implements HttpFunction {
private static final Logger logger = Logger.getLogger(HelloError.class.getName());
@Override
public void service(HttpRequest request, HttpResponse response)
throws IOException {
// These will NOT be reported to Error Reporting
System.err.println("I failed you");
logger.severe("I failed you");
// This WILL be reported to Error Reporting
throw new RuntimeException("I failed you");
}
}
Node.js
// These WILL be reported to Error Reporting
throw new Error('I failed you'); // Will cause a cold start if not caught
// These WILL be reported to Error Reporting
console.error(new Error('I failed you')); // Logging an Error object
console.error('I failed you'); // Logging something other than an Error object
throw 1; // Throwing something other than an Error object
callback('I failed you');
res.status(500).send('I failed you');
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.warn(RuntimeError('I failed you (logging.warn)'))
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)
后续步骤
如需搜索和过滤其他 Google Cloud 产品的代码示例,请参阅 Google Cloud 示例浏览器。