このトピックでは、Node.jsランタイムのエラーを処理する方法について説明します。
エラータイプ
キャプチャ例外
関数の実行中に例外がスローされた場合、function Computeはエラーをキャプチャし、エラーメッセージ、タイプ、およびスタック情報を含むJSON形式のデータを生成します。 次のコードスニペットに例を示します。
ECMAScriptモジュール
この例では、Node.js 18以降のみをサポートします。
サンプルコードはワンクリック展開をサポートしています。 サンプルコードは、ワンクリックでFunction Computeにデプロイできます。 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)"
]
}
異常な出口
関数が実行中に終了すると、システムは一般的なエラーメッセージを返します。
ECMAScriptモジュール
この例では、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で内部エラーが発生したか、関数設定が無効であるか、リソースの問題が存在します。
呼び出しエラーの詳細については、「再試行メカニズムの設定」をご参照ください。