From ef1e7e80eb25d4a2271ebc59a773abda2dba50c0 Mon Sep 17 00:00:00 2001 From: einhornimmond Date: Mon, 12 Apr 2021 16:14:26 +0200 Subject: [PATCH] More error catching, copy error in JsonRequest to able to return it to caller and send it per email --- .../src/cpp/JSONInterface/JsonRequestHandler.cpp | 14 ++++++++++++-- login_server/src/cpp/lib/JsonRequest.cpp | 2 +- login_server/src/cpp/model/table/PendingTask.cpp | 7 ++++++- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/login_server/src/cpp/JSONInterface/JsonRequestHandler.cpp b/login_server/src/cpp/JSONInterface/JsonRequestHandler.cpp index 3156015c9..99b4eb0fe 100644 --- a/login_server/src/cpp/JSONInterface/JsonRequestHandler.cpp +++ b/login_server/src/cpp/JSONInterface/JsonRequestHandler.cpp @@ -52,7 +52,12 @@ void JsonRequestHandler::handleRequest(Poco::Net::HTTPServerRequest& request, Po Poco::Dynamic::Var parsedResult = parseJsonWithErrorPrintFile(request_stream); if (parsedResult.size() != 0) { - json_result = handle(parsedResult); + try { + json_result = handle(parsedResult); + } + catch (Poco::Exception& ex) { + json_result = stateError("poco Exception in handle POST Request", ex.displayText()); + } } else { json_result = stateError("empty body"); @@ -61,7 +66,12 @@ void JsonRequestHandler::handleRequest(Poco::Net::HTTPServerRequest& request, Po else if(method == "GET") { Poco::URI uri(request.getURI()); auto queryParameters = uri.getQueryParameters(); - json_result = handle(queryParameters); + try { + json_result = handle(queryParameters); + } + catch (Poco::Exception& ex) { + json_result = stateError("poco Exception in handle GET Request", ex.displayText()); + } } if (json_result) { diff --git a/login_server/src/cpp/lib/JsonRequest.cpp b/login_server/src/cpp/lib/JsonRequest.cpp index 9feba3824..029858b2a 100644 --- a/login_server/src/cpp/lib/JsonRequest.cpp +++ b/login_server/src/cpp/lib/JsonRequest.cpp @@ -121,7 +121,7 @@ JsonRequestReturn JsonRequest::request(const char* methodName, const Poco::JSON: if (!object.isNull("details")) { addError(new ParamError(functionName, "details:", object.get("details").convert().data())); } - sendErrorsAsEmail(); + sendErrorsAsEmail("", true); return JSON_REQUEST_RETURN_ERROR; } else if (stateString == "success") { diff --git a/login_server/src/cpp/model/table/PendingTask.cpp b/login_server/src/cpp/model/table/PendingTask.cpp index 1e842fb33..cba102969 100644 --- a/login_server/src/cpp/model/table/PendingTask.cpp +++ b/login_server/src/cpp/model/table/PendingTask.cpp @@ -42,7 +42,12 @@ namespace model { UNIQUE_LOCK; std::stringstream ss; - result->stringify(ss); + try { + result->stringify(ss); + } + catch (Poco::Exception& ex) { + addError(new ParamError("PendingTask::setResultJson", "exception by json -> string", ex.displayText())); + } mResultJsonString = ss.str(); }