我正在为我正在使用Java进行的项目了解AWS Lambda。要求之一是我们使用自定义响应类型(而不是使用默认的AWS Lambda错误处理)返回大多数错误,但是我想知道是否有可能在写入输出流后也引发异常。对我来说似乎很奇怪,但这是我到目前为止所拥有的:
@Override
public void handleRequest(final InputStream inputStream,
final OutputStream outputStream,
final Context context) {
ABCRequest request;
ABCResponse response;
try {
request = this.mapper.readValue(requestStream, ABCRequest.class);
} catch (final IOException e) {
response = createResponse(..."error", etc);
writeResponseToOutput(response, outputStream); //writes the response to the output stream
throw new SomeCustomException("...", e);
}
response = handle(request);
writeResponseToOutput(response, outputStream);
}
我要做的就是从请求中读取值以捕获任何反序列化问题,如果存在异常,则以该错误响应进行响应。否则,继续并处理该请求并获得“正常”响应。但是对我来说似乎有点奇怪/混乱。
关于如何更好地处理这种情况的任何建议?
对于调用Lambda的呼叫者,他们仅获得我们发送的响应输出吗?还是它们也将默认的Lambda输出(从异常中)抛出到流中? (我们只希望异常显示在日志中,而不是返回给客户端。)
答案 0 :(得分:0)
基于this documentation,似乎推荐的方法是将细节包含在错误有效负载中,并将其作为引发的异常的一部分。
这样,仍然会引发异常,Lambda可以将响应正确地标记为错误,而不必手动处理成功/失败指示符。