本文介紹Node.js運行環境的錯誤處理相關內容。
錯誤類型
捕獲異常
如果函數在執行過程中拋出異常,Function Compute會捕獲到錯誤,並產生一個包含錯誤資訊、類型和堆棧資訊的JSON格式的資料,樣本如下所示。
ES模組
說明
此樣本僅支援運行在Node.js 18及以上版本的運行時環境。
當前範例程式碼支援一鍵部署,您可以直接在Function ComputeFC中一鍵部署本代碼。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)"
}
錯誤排查
如果Function Compute遇到錯誤,則會返回HTTP狀態碼、響應訊息和表明錯誤原因的異常類型。調用函數的用戶端或服務可以通過編程方式處理錯誤或將其傳遞到終端使用者。
以下列表描述了您可以從函數中接收的狀態代碼範圍。
2xx
2xx系列狀態碼表示Function Compute已接收到請求。如果響應中包含
X-Fc-Error-Type
訊息頭,則表明Function Compute捕獲到了函數錯誤(比如代碼中拋出的異常)。4xx
4xx系列錯誤(不包括429)通常說明發起調用的用戶端存在錯誤。
429表示請求被限流。
5xx
5xx系列錯誤表示Function Compute內部錯誤,或者函數的配置或資源存在問題。
有關調用錯誤的更多資訊,請參見錯誤處理。