全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网

错误类型

更新时间:2017-06-07 13:26:11

用户函数在运行后,会产生两种类型的错误:

  • Handled error:用户逻辑主动捕获的错误,并通过 callback 返回
  • Unhandled error:用户逻辑未能捕获的错误,例如模块不存在,超时等等

函数计算系统会将错误信息编码为 json 字符串返回。

Handled Error

当用户捕获错误并通过 callback(err) 返回时,如果参数 err 是 Error 类型的对象,调用栈信息(stack trace)也会被返回。

  1. // User function.
  2. exports.handler = function(event, context, callback) {
  3. var error = new Error("something is wrong");
  4. callback(error);
  5. };
  6. // Function response.
  7. {
  8. "errorMessage": "something is wrong",
  9. "errorType": "Error",
  10. "stackTrace": [
  11. "export.handler (/var/task/index.js.3:16)"
  12. ]
  13. }

如果 callback 参数是非 Error 类型的对象,调用栈信息将不会被返回。

  1. // User function.
  2. exports.handler = function(event, context, callback) {
  3. callback("something is wrong");
  4. };
  5. // Function response.
  6. {
  7. "errorMessage": "something is wrong"
  8. }

Unhandled Error

当用户逻辑未捕获到错误时,函数计算系统会尽可能捕获错误,并返回具体的信息。当遇到系统也无法捕捉的错误,例如用户函数在运行过程中突然崩溃退出,系统会返回一个通用的错误消息。

典型错误场景示例

错误类型 场景示例 错误消息
Handled 通过 callback(err) 返回错误,其中 err 是 error 类型 {“errorMessage”: “oops”, “errorType”: “Error”, “stackTrace”: [“exports.handler (/var/task/index.js:5:14)”]}
Handled 通过 callback(obj) 返回错误,其中 obj 是非错误类型的对象 {“errorMessage”: “oops”}
Unhandled 函数依赖的模块并不存在 {“errorMessage”: “Cannot find module ‘/code/X.js”}
Unhandled 指定的处理函数并不存在 {“errorMessage”: “Handler ‘X’ missing on module ‘Y’”}
Unhandled 函数执行超时 {“errorMessage”: “Task timed out after X seconds”}
Unhandled 其他用户程序并处理的错误 {“errorMessage”: “Process exited unexpectedly before completing request”}
本文导读目录