すべてのプロダクト
Search
ドキュメントセンター

Function Compute:エラー処理

最終更新日:Apr 02, 2026

Function Compute における C# 関数が例外をスローする、または予期せず終了した場合、プラットフォームは可能な限り情報をキャプチャし、構造化されたエラー詳細を応答として返します。この動作を理解することで、エラー発生時にも適切にフェイルオーバーできるハンドラの実装や、デバッグ可能なコード設計が可能になります。

関数によってスローされるエラー

関数の実行中にエラーが発生すると、Function Compute は例外をキャプチャし、レスポンスボディにエラー詳細を含めて応答を返します。

以下の例では、未処理の例外がスローされます:

using System;
using System.IO;
using System.Threading.Tasks;
using Aliyun.Serverless.Core;
using Microsoft.Extensions.Logging;

namespace Example
{
    public class Hello
    {
        public async void StreamHandler(Stream input, IFcContext context)
        {
            throw new Exception("oops");
        }

        static void Main(string[] args){}
    }
}

この関数を呼び出すと、レスポンスボディには以下が含まれます:

{
    "errorMessage": "oops",
    "errorType": "System.Exception",
    "stackTrace": [...]
}

また、応答には HTTP ヘッダー X-Fc-Error-Type: UnhandledInvocationError も含まれます。Function Compute のエラー種別の一覧については、「基本概念」をご参照ください。

関数の意図的な終了

関数ハンドラ内で System.Environment.Exit(1) を呼び出すと、Function Compute がエラー詳細をキャプチャする前にプロセスが終了します。この場合の応答には汎用的なメッセージのみが含まれ、エラー種別やスタックトレースは一切出力されません:

{
    "errorMessage": "リクエスト完了前にプロセスが予期せず終了しました(処理時間:45ms、最大メモリ使用量:49MB)"
}

関数ハンドラ内では System.Environment.Exit() の使用を避けてください。シャットダウンシグナルの処理や終了前のリソース解放が必要な場合は、代わりに構造化された例外処理を用いてください。