今天新项目设计讨论时涉及到了错误处理的情况,今天又看了看《c++编程规范》对错误处理有所感:
结论:优先使用异常而不是错误号处理错误。
异常与错误号对比:
1)使用错误号的代码繁琐,要想写出健壮的程序,应该随时注意进行错误的检查,此时使用错误号比较麻烦。
而使用异常则可以将容易出现错误的代码写到 try{}中即可。
2)使用错误号容易忽略对错误的处理,因为代码默认是忽略错误返回值的。而异常除非显式捕获才能忽略或者淹没。
3)使用错误号有时难以发现错误,如一些API的执行。
4)错误号不是扩作用域传播的,要想知道底层的错误,必须由底层主动的抛出错误编号。而异常则是自动跨域传播的。
5)在处理错误时,使用错误号会使错误的处理遍布于程序之中,而使用异常则会使错误的处理集中于Catch(){}中,这样会使程序变得优雅。(挺好!)
6)在构造函数中,无法使用错误号。因为构造函数没有返回值。其次,对于某些操作符的重载也不易用错误号,因为他们的返回值是具有特殊意义的。
当然错误号也有自己适合的地方,以后补充!