【问题标题】:AWS Lambda - callback("some error type") equivalent in Java 8AWS Lambda - Java 8 中的回调(“某些错误类型”)等价物
【发布时间】:2016-12-08 00:57:19
【问题描述】:

如何让 lambda 函数在 Java 8 中报告失败?

我发现这在 Node.js 中是可能的。
http://docs.aws.amazon.com/lambda/latest/dg/nodejs-prog-model-handler.html

使用回调参数
Node.js 运行时 v4.3 支持可选的回调参数。你 可以使用它显式地将信息返回给调用者。这 一般语法是:

callback(Error error, Object result);

地点:

  • error – 是一个可选参数,可用于提供结果 失败的 Lambda 函数执行。当 Lambda 函数>成功时,您可以将 null 作为第一个参数传递。

  • result – 是一个可选参数,可用于提供函数成功执行的结果。提供的结果必须是 JSON.stringify 兼容。如果提供错误,则此参数为 忽略。

注意

使用回调参数是可选的。如果你不使用 可选回调参数,行为与调用 没有任何参数的回调()。您可以在中指定回调 将信息返回给调用者的代码。

如果您不在代码中使用回调,AWS Lambda 将调用它 隐式,返回值为null。

当回调被调用(显式或隐式)时,AWS Lambda 继续 Lambda 函数调用,直到 Node.js 事件循环 是空的。

以下是回调示例:

callback(); // Indicates success but no information returned to the caller. callback(null); // Indicates success but no information returned to the caller. callback(null, "success"); // Indicates success with information returned to the caller. callback(error);
// Indicates error with error information returned to the caller.

AWS Lambda 将错误参数的任何非空值视为 处理异常。

【问题讨论】:

标签: java amazon-web-services aws-lambda


【解决方案1】:

只要抛出一个异常,不要在任何地方捕获它。任何未捕获的异常都会导致 Lambda 失败。您可以查看有关如何使用 Java 在 AWS Lambda 中报告故障的更多信息:https://docs.aws.amazon.com/lambda/latest/dg/java-exceptions.html

public TestResponse handleRequest(TestRequest request, Context context) throws RuntimeException {
   throw new RuntimeException("Error");
}

注意throws 声明,它允许将未处理的异常抛出到方法之外。

【讨论】:

  • 这是我的问题。如果我尝试在 handleRequest 方法中抛出异常。我收到一个编译错误:“未处理的异常类型异常”。我不想处理异常。 Eclipse 迫使我将其包装在 Try/Catch 中
  • Java 基础 :) 用 throws 语句标记您的处理程序方法,然后编译器就不会喊“public TestResponse handleRequest(TestRequest request, Context context) throws RuntimeException”
  • 漂亮!非常感谢!!
  • RuntimeException 和子类不需要声明被抛出。这些就是所谓的未经检查的异常。
猜你喜欢
  • 2017-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-15
  • 2023-03-04
  • 1970-01-01
  • 2015-08-14
  • 1970-01-01
相关资源
最近更新 更多