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

Function Compute:エラー処理

最終更新日:Jul 18, 2024

このトピックでは、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のエラータイプについては、「基本」をご参照ください。

関数の積極的な終了

実行中に関数がプロアクティブに存在するときにエラーが発生した場合、エラー情報またはスタック情報を取得できません。 この方法はお勧めできません。

サンプルコード:

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)
        {
            System.Environment.Exit(1);
        }

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

関数が呼び出されると、次のレスポンスが返されます。

{
    "errorMessage": "リクエストを完了する前にプロセスが予期せず終了しました (期間: 45ms、maxMemoryUsage: 49MB)"
}