我正在AWS中创建一个状态机。在第一个状态(Lambda)中,如果抛出异常,它将被捕获并传递给另一个lambda进行处理。抛出异常时,我创建了一个继承自Exception类并具有bool属性的自定义类。该属性已设置,但是当收到输出时,它没有该属性。
public class CustomException : Exception
{
private bool isReprocessed;
public CustomException(String message) : base(message)
{ isReprocessed = true; }
}
Lambda的输出 -
{
"errorType" : "CustomException",
"errorMessage": "Custom Exception thrown.",
"stackTrace": [
"at lambdaProcessingFromStepFunction.Function.FunctionHandler(Object input, ILambdaContext context)",
"at lambda_method(Closure , Stream , Stream , ContextInfo )"
],
"cause": {
"errorType" : "CustomException",
"errorMessage" : "Custom Exception thrown.",
"stackTrace" : [
"at lambdaProcessingFromStepFunction.Function.FunctionHandler(Object input, ILambdaContext context)"
]
}
}
答案 0 :(得分:1)
AWS中有一个图层可以格式化不同lambdas之间或转到cloudWatch时的所有异常。就像在大多数框架中一样,当你抛出一个错误时,它会被解析为通用格式,如果你离开它创建的环境。有几个选项,你可以捕获lambda本身的所有异常,然后将它们序列化为你的任何对象想。或者您可以将额外信息放入消息中,然后在另一端解析消息(想象错误代码)。
https://docs.aws.amazon.com/lambda/latest/dg/dotnet-exceptions.html
另一种选择是,如果没有很多不同的情况,您可以使用不同的命名异常。因此,有一个异常CustomException和另一个异常CustomExceptionReprocessed,然后在状态机中,您可以将处理程序绑定到特定的异常名称。