在 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();
}
哪个被认为是更好地使用异常处理/哪个是更好的做法?
最佳答案
我只会在以下两种情况之一中继承标准异常类:
- 所有标准异常类都没有描述我的异常性质的名称
- 我的异常需要比标准异常中的信息更多的信息(即描述错误的字符串)。
否则,没有多大意义。特别是如果其他人必须与您的代码交互并且想知道为什么有一个自定义异常类不执行任何标准异常不执行的操作。
关于c++ - C++异常的正确使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10336652/