我们说我有以下功能:
unsigned char *f(unsigned char*, int, int, long, const char*);
我可以将返回值更改为HRESULT
(或我自己定义的),但我必须更改函数内的整个代码。或者我可以使用throw
来指出错误。
我的问题是:
HRESULT
?throw
有哪些优点/缺点?我应该使用第二个还是完全取决于我喜欢的?
编辑: 我并不严格意味着使用HRESULT
。您可以将自己的枚举定义为独立于Windows的错误处理
答案 0 :(得分:2)
我会说在处理C ++中的错误时应该总是求助于异常。让我们看看为什么在你的情况下它是更好的选择。
首先HRESULT
是Windows操作系统中使用的数据类型,它会立即使您的代码在Linux平台上无法移植。
其次,首先涵盖所有其他方面。
为什么例外优于错误代码?
1)异常将错误的流量与正常流量分开,这很难通过错误代码获得。
2)有时候没有合理的错误代码可以发送给调用者。
3)如果您使用错误代码,则检查可用性部门是否发生正常/错误退出更有责任。但是,未被捕获的异常会使您的程序停止运行。
使用异常而不是错误代码只是一些好处。
答案 1 :(得分:1)
我会说它完全取决于你喜欢什么。没有优势或劣势(使用您的编辑)。例如,我更喜欢使用throw
因为最终用户被迫进行某种错误检查,所以我几乎在所有情况下都使用throw。