From: Xuan-Son Nguyen Date: Tue, 4 Feb 2025 17:25:42 +0000 (+0100) Subject: server : add try..catch to places not covered by set_exception_handler (#11620) X-Git-Tag: upstream/0.0.4719~81 X-Git-Url: https://git.djapps.eu/?a=commitdiff_plain;h=3962fc1a7956dd0afacfbce10fd1a3ffd3ad857e;p=pkg%2Fggml%2Fsources%2Fllama.cpp 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 --- diff --git a/examples/server/server.cpp b/examples/server/server.cpp index e0acc470..9cdf2058 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) {