怎样正确使用异常和错误码

在不产生异常的情况下,C++ 的异常机制效率很高,几乎没有任何多余开销。但是在出现异常的时候,开销就不小了。“异常” 顾名思义,不经常出现,所以性能不是问题。不要用异常来做寻常的 flow control (程序流控制),还是老老实实用 if , else, for, while ,如果你的异常经常出现,就用 return code ,因为出现异常的时候,有开销。C++ 中,写 exception safe 的代码还是挺难的一件事。在构造函数中抛异常也会产生严重后果,内存泄漏,析构函数不能被调用,这就是为啥在写构造函数的时候,一定要使用成员初始化列表 (member initializer lists),而不是在构造函数的函数体中初始化对象。至于 exception 会不会让代码变大,看你的 exception handler 怎么写,可以说,几乎不会大多少,完全可以忽略不计。


    推荐阅读