c++ - C++异常的正确使用

标签 c++ exception coding-style exception-handling runtime-error

在 C++ 中,我应该使用 std::runtime_error 来指示发生了某种错误,还是应该创建继承自 std::runtime_error 的自定义异常以便我可以更好地处理它们。

例如,如果我以某种方式从用户那里获得输入,那会更好:

if (inputInvalid)
{
    throw std::runtime_error("Invalid input!");
}

与...

class invalid_input
    : public std::runtime_error /* or should I inherit from std::exception? */
{
public:
    invalid_input()
        : std::runtime_error("Invalid input!")
    {
    };
};

-------------------------------------------------------

if (inputInvalid)
{
    throw invalid_input();
}

哪个被认为是更好地使用异常处理/哪个是更好的做法?

最佳答案

我只会在以下两种情况之一中继承标准异常类:

  1. 所有标准异常类都没有描述我的异常性质的名称
  2. 我的异常需要比标准异常中的信息更多的信息(即描述错误的字符串)。

否则,没有多大意义。特别是如果其他人必须与您的代码交互并且想知道为什么有一个自定义异常类不执行任何标准异常不执行的操作。

关于c++ - C++异常的正确使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10336652/

相关文章:

c++ - 如何在 dev c 中使用 gcc4.7.2 的 GMP 库

C++写到文件前面

c++ - 遍历没有开始和结束的 vector

java - 使用 Hibernate 捕获 PSQLException

java - 以下代码中的错误

android - 如何在 Android 中更改选项卡样式?

c++ - 在定义之前立即声明函数的原因?

c++ - 当不再有对象引用时,COM 会自动卸载 DLL 吗?

c++ - 如何在 Qt 中捕获异常?

javascript - JS 中的对象字面量符号差异