错误处理 本文介绍函数计算Go运行环境的错误处理相关内容。 返回错误信息 如下示例直接返回错误信息: package main import ( "errors" "gitee.com/ctyunfaas/cfruntimegosdk/cf" ) func HandleRequest() error { return errors.New("trouble now") } func main() { cf.Start(HandleRequest) } 调用函数时,会收到如下响应: { "errorMessage": "trouble now", "errorType": "errorString" } 使用panic抛出错误 如下示例使用panic抛出错误信息: package main import ( "gitee.com/ctyunfaas/cfruntimegosdk/cf" ) func HandleRequest() error { panic("Error: trouble now") return nil } func main() { cf.Start(HandleRequest) } 调用函数时,会收到如下响应(示例中仅列出了部分堆栈信息): { "errorMessage": "Error: trouble now", "errorType": "string", "stackTrace": [ { "path": "gitee.com/ctyunfaas/cfruntimegosdk@v0.0.020240319091518e684f96d8b85/cf/errors.go", "line": 33, "label": "fcPanicResponse" }, { "path": "gitee.com/ctyunfaas/cfruntimegosdk@v0.0.020240319091518e684f96d8b85/cf/function.go", "line": 111, "label": "(userFunction).Invoke.func1" }, ...... ] } os.Exit(1) 非必要不建议使用包含 os.Exit(1)代码的错误处理代码,使用该方法无法获取退出时的报错信息和堆栈信息。例如 log.Fatal方法。示例如下: package main import ( "gitee.com/ctyunfaas/cfruntimegosdk/cf" "log" ) func HandleRequest() error { log.Fatal("trouble now") return nil } func main() { cf.Start(HandleRequest) } 调用函数时,会收到如下响应: EOF