From 3962fc1a7956dd0afacfbce10fd1a3ffd3ad857e Mon Sep 17 00:00:00 2001 From: Xuan-Son Nguyen Date: Tue, 4 Feb 2025 18:25:42 +0100 Subject: [PATCH] server : add try..catch to places not covered by set_exception_handler (#11620) * server : add try..catch to places not covered by set_exception_handler * log_server_request: rm try catch, add reminder --- examples/server/server.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/examples/server/server.cpp b/examples/server/server.cpp index e0acc4705..9cdf2058f 100644 --- a/examples/server/server.cpp +++ b/examples/server/server.cpp @@ -3353,6 +3353,8 @@ static void log_server_request(const httplib::Request & req, const httplib::Resp return; } + // reminder: this function is not covered by httplib's exception handler; if someone does more complicated stuff, think about wrapping it in try-catch + LOG_INF("request: %s %s %s %d\n", req.method.c_str(), req.path.c_str(), req.remote_addr.c_str(), res.status); LOG_DBG("request: %s\n", req.body.c_str()); @@ -3439,9 +3441,13 @@ int main(int argc, char ** argv) { message = "Unknown Exception"; } - json formatted_error = format_error_response(message, ERROR_TYPE_SERVER); - LOG_WRN("got exception: %s\n", formatted_error.dump().c_str()); - res_error(res, formatted_error); + try { + json formatted_error = format_error_response(message, ERROR_TYPE_SERVER); + LOG_WRN("got exception: %s\n", formatted_error.dump().c_str()); + res_error(res, formatted_error); + } catch (const std::exception & e) { + LOG_ERR("got another exception: %s | while hanlding exception: %s\n", e.what(), message.c_str()); + } }); svr->set_error_handler([&res_error](const httplib::Request &, httplib::Response & res) {