From d490c3ff4ef10e2569d1cad2e34ebd79fedbf326 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20Lien=20Sell=C3=A6g?= Date: Thu, 1 Sep 2016 17:06:19 +0200 Subject: [PATCH] feature: add exception handler for http server --- server_http.hpp | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/server_http.hpp b/server_http.hpp index b054b41..70a86a2 100644 --- a/server_http.hpp +++ b/server_http.hpp @@ -80,6 +80,7 @@ namespace SimpleWeb { std::string remote_endpoint_address; unsigned short remote_endpoint_port; + std::function exception_handler; private: Request(): content(streambuf) {} @@ -90,7 +91,10 @@ namespace SimpleWeb { remote_endpoint_address=socket.lowest_layer().remote_endpoint().address().to_string(); remote_endpoint_port=socket.lowest_layer().remote_endpoint().port(); } - catch(const std::exception&) {} + catch(const std::exception&e) { + if(exception_handler) + exception_handler(e); + } } }; @@ -186,6 +190,7 @@ namespace SimpleWeb { callback(ec); }); } + std::function exception_handler; protected: boost::asio::io_service io_service; @@ -250,7 +255,9 @@ namespace SimpleWeb { try { content_length=stoull(it->second); } - catch(const std::exception &) { + catch(const std::exception &e) { + if(exception_handler) + exception_handler(e); return; } if(content_length>num_additional_bytes) { @@ -356,7 +363,9 @@ namespace SimpleWeb { try { http_version=stof(request->http_version); } - catch(const std::exception &) { + catch(const std::exception &e){ + if(exception_handler) + exception_handler(e); return; } @@ -374,7 +383,9 @@ namespace SimpleWeb { try { resource_function(response, request); } - catch(const std::exception&) { + catch(const std::exception&e) { + if(exception_handler) + exception_handler(e); return; } }