diff options
Diffstat (limited to 'common/connectionbase.cpp')
-rw-r--r-- | common/connectionbase.cpp | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/common/connectionbase.cpp b/common/connectionbase.cpp index 165614f..a113e6a 100644 --- a/common/connectionbase.cpp +++ b/common/connectionbase.cpp @@ -1,6 +1,6 @@ #include "connectionbase.h" -#include <stdexcept> +#include <exception> #include <iostream> @@ -11,7 +11,7 @@ void ConnectionBase::start_recv() { void ConnectionBase::got_data(uint8_t* data, std::size_t bytes) { if(pending_size == 0) { if(bytes != 4) { - throw std::runtime_error("Deserialization header error."); + error("Deserialization header error."); } uint16_t* header = (uint16_t*)data; @@ -29,7 +29,7 @@ void ConnectionBase::got_data(uint8_t* data, std::size_t bytes) { if(bytes != pending_size) { std::cout << "Bytes: " << bytes << " Pending size: " << pending_size << std::endl; - throw std::runtime_error("Deserialization attempted with incomplete data."); + error("Deserialization attempted with incomplete data."); // TODO: Calling got_data() with incomplete data should be allowed. } @@ -75,11 +75,16 @@ void ConnectionBase::got_data(uint8_t* data, std::size_t bytes) { break; default: - throw std::runtime_error("Deserialization attempted on unknown message type."); + error("Deserialization attempted on unknown message type."); } if(bytes) { - m->deserialize(data, bytes); + try { + m->deserialize(data, bytes); + + } catch(std::exception& e) { + error(std::string("Deserialization failed: ") + e.what()); + } } got_message(m); |