c++ 构造函数返回空对象的思考

背景

在苦逼的敲代码中遇到了一个苦恼的问题,想要在构造函数中写一个判断,如果判断出错的话返回空对象,但是经过一顿百度搜索后发现没有找到如果在构造函数中返回空对象,于是就想到了一个替代的方法。

过程

使用C++的try catch可以避免返回空对象,我们可以在构造函数中让他throw一个自定义的错误,然后在外层catch,这样就可以在构造函数中出现错误时及时停止下面代码,执行错误处理代码。

不过在构造函数中越少的操作是越好的,可以在类中再写一个init函数进行判断和可能失败的操作.

try catch的反思

先贴一个别人讲的比较详细的帖子,基础就不多说了。
https://www.cnblogs.com/MrYuan/p/4800257.html

就此机会总结一下自己使用try catch的场景:

  1. 网络请求中
  2. 系统I/O操作中
  3. 多进程多线程
  4. python中应多用try except(毕竟python就是这样的风格)

p.s. 在构造函数中如果动态申请内存然后抛出了错误后,这个时候动态申请的内存是没有释放的,所以根据自己情况在构造函数中使用 throw,当然也可以使用智能指针。

你可能感兴趣的:(C++)