In C++, if an exception escapes a std::thread function, it triggers std::terminate(), which immediately crashes the program. The main thread cannot catch these exceptions using standard try/catch blocks.
This happens in NetworkManager.cpp inside the WaitForNewPackets function. Because this function runs in a background worker thread (m_thread_process), the throw; statements at the end of the catch blocks will crash the entire application whenever any network error occurs (like a packet parsing error or missing ZLIB), rather than allowing the program to handle it gracefully.
In C++, if an exception escapes a std::thread function, it triggers std::terminate(), which immediately crashes the program. The main thread cannot catch these exceptions using standard try/catch blocks.
This happens in NetworkManager.cpp inside the WaitForNewPackets function. Because this function runs in a background worker thread (m_thread_process), the throw; statements at the end of the catch blocks will crash the entire application whenever any network error occurs (like a packet parsing error or missing ZLIB), rather than allowing the program to handle it gracefully.