gpt4 book ai didi

c# - AWS .net Core Lambda 项目中的全局异常处理程序?

转载 作者:太空狗 更新时间:2023-10-29 23:28:20 33 4
gpt4 key购买 nike

简化——我已经创建了一个空的 AWS Lambda 项目与 .net 核心:

enter image description here

这是默认的空 lambda 函数项目:

enter image description here

我想在全局范围内捕获应用程序中的所有异常。

所以我创建了一个生成异常的方法,并添加了一个全局应用程序处理程序:

完整代码:

 public class Function
{
void CreateException()
{
var z = 0;
var a = 2 / z;
Console.Write(a);
}

public Function()
{
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
}

public void FunctionHandler(object input, ILambdaContext context)
{
CreateException();
}

private void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
// � It never gets here
}

}

问题是引发了异常,但它从未触发 CurrentDomain_UnhandledException

问题:

这是捕获全局异常的正确方法吗?为什么在存在未处理的异常时不调用 CurrentDomain_UnhandledException

最佳答案

虽然我无法回答为什么这不起作用,但我可以告诉你我已经做了一个解决方法。

我使用的解决方法是将我的 FunctionHandler 包装在 try/catch 中。由于这是 lambda 函数中的唯一入口点,任何抛入此处的内容都将被捕获...就我的目的而言,它有效地充当了全局处理程序。

public void FunctionHandler(object input, ILambdaContext context)
{
try
{
CreateException();
}
catch (Exception e)
{
// Handle your 'uncaught' exceptions here and/or rethrow if needed
Console.WriteLine(e);
throw;
}
}

您可能想要重新抛出以便:

  1. AWS会重试该函数,重试X次后发送DeadLetterQueue
  2. 您在 CloudWatch Logs 中获得异常

关于c# - AWS .net Core Lambda 项目中的全局异常处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54903340/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com