Closed. This question needs to be more focused。它当前不接受答案。












想改善这个问题吗?更新问题,使其仅关注editing this post的一个问题。

6年前关闭。



Improve this question




假设我具有以下功能:
unsigned char *f(unsigned char*, int, int, long, const char*);

我可以将返回值更改为HRESULT(或我自己定义的),但是我必须更改函数中的整个代码。或者我可以简单地使用throw指出错误。

我的问题是:
  • 返回HRESULT有什么优点/缺点?
  • throw有哪些优点/缺点?
  • 和哪种方法更安全?

  • 我应该使用第二种还是完全取决于我的喜好?

    编辑:我并不是严格说使用HRESULT。您可以为错误处理定义自己的枚举,使其独立于Windows

    最佳答案

    我要说的是,在处理C++中的错误时,您应该始终求助于异常。让我们看看为什么在您的情况下有更好的选择。

    First HRESULT是Windows操作系统中使用的数据类型,它立即使您的代码在Linux平台上不可移植。

    第二,首先涵盖所有其他方面。

    为什么异常比错误代码更好?

    1)异常将错误流与正常流分开,这很难通过错误代码获得。

    2)有时没有合理的错误代码可以发送给 call 者。

    3)如果您使用错误代码,则检查可用性部门是否正常/错误退出的责任更大。但是,未捕获的异常会使您的程序死机。

    这些只是使用异常而不是错误代码的好处。

    关于c++ - 抛出或返回错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27481979/

    10-17 02:48