关于 Web 库抛出异常的总结

问题起因

在处理报文时,舍友发送的报文中包含了微信的特殊字符,这导致了 JSON 数据格式不合法,最终抛出了 login 异常,导致程序崩溃。这个问题让我意识到需要更好地处理异常,避免程序直接终止。


异常分析

在分析过程中,我发现当 JSON 库在解析过程中遇到错误时,会抛出异常。而这个异常没有被正确处理,导致了程序的崩溃。为了避免这个问题,我决定在 http_task 中捕获报文体解析时抛出的异常,并记录日志,而不是让程序直接崩溃。


捕获异常与调试

通过查看函数调用堆栈,我能够准确定位到抛出异常的具体位置。基于此,我可以在正确的地方进行异常捕获,确保程序能够在遇到类似情况时优雅地处理异常。


使用 VSCode 作为调试器

为了进一步调试这个问题,我尝试使用 VSCode 作为调试器。按照原本的 CMake 配置进行操作,VSCode 成功地启动了调试会话,帮助我更容易地跟踪程序的执行流程。


虚拟机性能问题

在调试过程中,我发现虚拟机的性能较差,导致 Postman 访问虚拟机时非常卡,甚至严重影响了开发进程。尽管如此,这个问题在一段时间后自行缓解,可能是由于网络问题或资源分配不足。


异常捕获的最终解决方案

通过不断调试和查看堆栈跟踪,我最终找到了抛出异常的具体点,并在该点添加了异常处理。这样,程序在遇到类似的报文异常时,不会再崩溃,而是会记录详细的日志,帮助我们进一步分析和修复问题。


小结

通过这次处理 Web 库抛出异常的经验,我学到了如何在正确的地方捕获异常,并记录日志,避免程序崩溃。使用 VSCode 调试器也让我更高效地解决了问题,虽然在虚拟机上运行时遇到了一些性能问题,但最终通过耐心等待和分析,问题得以解决。

图片1