]> git.djapps.eu Git - pkg/ggml/sources/llama.cpp/commitdiff
server : add try..catch to places not covered by set_exception_handler (#11620)
authorXuan-Son Nguyen <redacted>
Tue, 4 Feb 2025 17:25:42 +0000 (18:25 +0100)
committerGitHub <redacted>
Tue, 4 Feb 2025 17:25:42 +0000 (18:25 +0100)
* server : add try..catch to places not covered by set_exception_handler

* log_server_request: rm try catch, add reminder

examples/server/server.cpp

index e0acc470596563548575669a1246176fedfa7156..9cdf2058fd03703936368848f15fa259fd92fea0 100644 (file)
@@ -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) {