错误处理

本文介绍Node.js运行环境的错误处理相关内容。

错误类型

捕获异常

如果函数在执行过程中抛出异常,函数计算会捕获到错误,并生成一个包含错误信息、类型和堆栈信息的JSON格式的数据,示例如下所示。

ES模块

说明
  • 此示例仅支持运行在Node.js 18及以上版本的运行时环境。

  • 当前示例代码支持一键部署,您可以直接在函数计算FC中一键部署本代码。nodejs-fc-err-es

export const handler = async (event, context) => {
  throw new Error('oops');
};

CommonJS模块

exports.handler = function(event, context, callback) {
  throw new Error('oops');
};

收到的响应示例如下所示。

{
    "errorMessage": "oops",
    "errorType": "Error",
    "stackTrace": [
        "Error: oops",
        "    at handler (file:///code/index.mjs:2:9)",
        "    at module.exports (file:///var/fc/runtime/nodejs20/bootstrap.mjs:5655:14)",
        "    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"
    ]
}

异常退出

如果您的函数在运行过程中主动退出,系统会返回一个通用的错误信息。

ES模块

说明

此示例仅支持运行在Node.js 18及以上版本的运行时环境。

export const handler = async (event, context) => {
  process.exit(1);
};

CommonJS模块

exports.handler = function(event, context, callback) {
  process.exit(1);
};

收到的响应如下所示。

{
    "errorMessage": "Process exited unexpectedly before completing request (duration: 12ms, maxMemoryUsage: 0MB)"
}

错误排查

如果函数计算遇到错误,则会返回HTTP状态代码、响应消息和表明错误原因的异常类型。调用函数的客户端或服务可以通过编程方式处理错误或将其传递到终端用户。

以下列表描述了您可以从函数中接收的状态码范围。

  • 2xx

    2xx系列状态代码表示函数计算已接收到请求。如果响应中包含X-Fc-Error-Type消息头,则表明函数计算捕获到了函数错误(比如代码中抛出的异常)。

  • 4xx

    4xx系列错误(不包括429)通常说明发起调用的客户端存在错误。

    429表示请求被限流。

  • 5xx

    5xx系列错误表示函数计算内部错误,或者函数的配置或资源存在问题。

有关调用错误的更多信息,请参见错误处理