AWS Lambda异常处理未添加自定义属性

时间:2018-06-11 10:25:11

标签: c# aws-lambda aws-step-functions

我正在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)"
        ]
    }
}

1 个答案:

答案 0 :(得分:1)

AWS中有一个图层可以格式化不同lambdas之间或转到cloudWatch时的所有异常。就像在大多数框架中一样,当你抛出一个错误时,它会被解析为通用格式,如果你离开它创建的环境。有几个选项,你可以捕获lambda本身的所有异常,然后将它们序列化为你的任何对象想。或者您可以将额外信息放入消息中,然后在另一端解析消息(想象错误代码)。

https://docs.aws.amazon.com/lambda/latest/dg/dotnet-exceptions.html

  

另一种选择是,如果没有很多不同的情况,您可以使用不同的命名异常。因此,有一个异常CustomException和另一个异常CustomExceptionReprocessed,然后在状态机中,您可以将处理程序绑定到特定的异常名称。