0

考虑一个带有 .net Lambda 的 Step Function。

如果 lambda 在消息中抛出包含新行的异常,则 Step Function 无法正确识别类型,而是报告:

错误

Lambda.未知

原因

无法确定原因,因为 Lambda 没有返回错误类型。

最简单的重现是创建一个 .net lambda,并立即抛出 ArgumentNullException。

对于我们的自定义例外,我已经能够强制执行没有换行符。但是对于内置异常来说,这是一种痛苦。此外,创建自定义异常并将麻烦的异常作为其内部异常传递仍然不起作用。

我不得不求助于创建一个暴露原始异常文本的异常(删除换行符),所以至少我可以得到消息。但是,由于此异常的类型始终相同,因此我失去了 Step Functions 中可用的可爱分支,具体取决于类型。

注意:我也认为消息中的双引号也会使事情变得混乱。

有任何想法吗?我相信这是 AWS 中的一个错误,理想情况下我应该能够抛出任何异常,并且 Step Function 会正确报告它。

4

1 回答 1

0

如果NL字符是给您带来麻烦的字符,您可以在 lamdbdas 周围使用包装器来抛出相同的异常但没有任何异常NL,例如(假设您的 lambdas return int):

public Func<int> BuildLambda(Func<int> orig) {
     return () => {
           try {
              return orig();
           } catch (Exception e) {
                 if (e.Message == null) throw e;
                 throw (Exception)Activator.CreateInstance(e.GetType(), e.Messsage.Replace("\n", "");
           }
     }
}
于 2017-10-25T14:06:09.527 回答