Я изучаю AWS Lambda для проекта, над которым я работаю на Java.Одним из требований является то, что мы возвращаем большинство ошибок, используя наш пользовательский тип ответа (вместо того, чтобы использовать обработку лямбда-ошибок AWS по умолчанию), но мне интересно, можно ли было бы также генерировать исключение после записи в выходной поток,Мне это кажется странным, но это то, что я имею до сих пор:
@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);
}
Все, что я пытаюсь сделать, - это уловить любые проблемы десериализации при считывании значения из запроса и ответить этой ошибкой.ответ, если там есть исключение.В противном случае продолжите и обработайте запрос и получите «нормальный» ответ.Но это кажется немного странным / грязным для меня.
Есть какие-нибудь предложения о том, как лучше справиться с этой ситуацией?
Для вызывающего абонента, вызывающего лямбду, они получают только тот ответ, который мы отправили?Или они также получают лямбда-вывод по умолчанию, брошенный в поток (из исключения)?(Мы просто хотим, чтобы исключение отображалось в журналах, а не возвращалось клиенту.)