effective c++ 8: Prevent exceptions from leaving destrctors
析构函数的异常会导致不确定行为。比如说我要有若干个自定义类的对象存在vector里,但是在析构函数里销毁这个vector第一个元素的时候发生了异常,那后面的元素可能无法正确销毁从而导致内存泄露。
解决析构函数抛异常的方法有这样两种:
1. 一旦抛异常就结束程序(catch里abort()),这样避免了异常继续传播。
2. 吞下异常(catch里记录异常原因等等)。
但是更好的方式是把可能导致异常的操作写在析构函数外面的普通函数里,这样就有机会去处理这个可能的异常。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步