本文介紹C#運行環境發生錯誤資訊時,Function Compute如何處理 。
函數拋出異常
如果您的函數在執行過程中拋出異常,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 Header中會包含X-Fc-Error-TypeUnhandledInvocationError
。關於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)"
}