このトピックでは、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 Task<Stream> 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 Task<Stream> StreamHandler(Stream input, IFcContext context)
{
System.Environment.Exit(1);
}
static void Main(string[] args){}
}
}
関数が呼び出されると、次のレスポンスが返されます:
{
"errorMessage": "Process exited unexpectedly before completing request (duration: 45ms, maxMemoryUsage: 49MB)"
}