Quando uma função C# no Function Compute gera uma exceção ou encerra inesperadamente, a plataforma captura as informações disponíveis e retorna detalhes estruturados do erro. Compreender esse comportamento ajuda a escrever handlers que falham de maneira controlada e permanecem fáceis de depurar.
Erros gerados por uma função
Se ocorrer um erro durante a execução da função, o Function Compute captura a exceção e retorna os detalhes do erro no corpo da resposta.
O exemplo a seguir gera uma exceção não tratada:
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){}
}
}
Ao invocar essa função, o corpo da resposta contém:
{
"errorMessage": "oops",
"errorType": "System.Exception",
"stackTrace": [...]
}
A resposta também inclui o cabeçalho HTTP X-Fc-Error-Type: UnhandledInvocationError. Para obter a lista completa de tipos de erro do Function Compute, consulte Conceitos básicos.
Encerramento proativo de uma função
Chamar System.Environment.Exit(1) em um handler de função encerra o processo antes que o Function Compute capture os detalhes do erro. A resposta contém apenas uma mensagem genérica, sem tipo de erro nem stack trace:
{
"errorMessage": "Process exited unexpectedly before completing request (duration: 45ms, maxMemoryUsage: 49MB)"
}
Evite usar System.Environment.Exit() em handlers de função. Caso precise tratar sinais de desligamento ou limpar recursos antes do encerramento, utilize o tratamento estruturado de exceções.