本文介绍函数计算Go运行环境的错误处理相关内容。
返回错误信息
如下示例直接返回错误信息:
package main
import (
"errors"
"gitee.com/ctyunfaas/cf-runtime-go-sdk/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/cf-runtime-go-sdk/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/cf-runtime-go-sdk@v0.0.0-20240319091518-e684f96d8b85/cf/errors.go",
"line": 33,
"label": "fcPanicResponse"
},
{
"path": "gitee.com/ctyunfaas/cf-runtime-go-sdk@v0.0.0-20240319091518-e684f96d8b85/cf/function.go",
"line": 111,
"label": "(*userFunction).Invoke.func1"
},
......
]
}
os.Exit(1)
非必要不建议使用包含 os.Exit(1)
代码的错误处理代码,使用该方法无法获取退出时的报错信息和堆栈信息。例如 log.Fatal
方法。示例如下:
package main
import (
"gitee.com/ctyunfaas/cf-runtime-go-sdk/cf"
"log"
)
func HandleRequest() error {
log.Fatal("trouble now")
return nil
}
func main() {
cf.Start(HandleRequest)
}
调用函数时,会收到如下响应:
EOF