Roy*_*mir 5 c# exception amazon-web-services .net-core aws-lambda
简化—我使用.net CORE创建了一个空的AWS Lambda项目:
这是默认的空lambda函数项目:
我想全局捕获应用程序中的所有异常。
因此,我创建了一个生成异常的方法,并添加了一个全局应用程序处理程序:
完整的代码:
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
}
}
Run Code Online (Sandbox Code Playgroud)
问题是引发了异常,但从未触发 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;
}
}
Run Code Online (Sandbox Code Playgroud)
您可能想要重新抛出,以便:
| 归档时间: |
|
| 查看次数: |
341 次 |
| 最近记录: |