什么是C++中错误处理的正确方法

Jee*_*eet 9 c++ error-handling

一种是使用C++异常:尝试catch块.但是,当引发异常时,释放动态内存将成为一个问题.

第二种是使用C风格:errno变量

第三个是在错误时返回-1,在成功时返回0 :)

应该选择哪种方式进行中型项目?为什么?还有其他更好的方法..?

GMa*_*ckG 28

但是,当引发异常时,释放动态内存将成为一个问题.

不,这不对.std::vector<int> v(100);完成.

这里的概念称为范围限制资源管理(SBRM),也称为更常见(和笨拙)名称资源获取初始化(RAII).基本上,所有资源都包含在一些对象中,该对象将清理析构函数中的资源(始终保证为自动分配的对象运行).因此,无论函数是正常存在还是通过异常存在,都会运行析构函数并清理您的资源.

永远不要在需要明确释放它的地方进行分配,使用容器和智能指针.

  • @Stable:"对于每一条规则,都有例外"是一条规则吗?在任何情况下,除了编写资源容器本身之外,您将永远*不必使用容器.让自己处于一个必须非常小心地记住删除某些东西的位置是没有意义的,它总是可以在析构函数中自动化. (3认同)