在C++中的我应该用std::runtime_error
来表示某种错误发生,或者我应该创建一个从std::runtime_error
继承,所以我可以更好地处理这些自定义异常。恰当使用C++异常
例如,如果我从不知何故用户的输入,这将是更好:
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();
}
这被认为是更好的使用异常处理/如果这更好的实践?
后者将使捕获这种特定类型的运行时错误成为可能,而第一种只允许您捕获'a'运行时错误。哪个更好取决于你打算如何处理错误。 – wroniasty 2012-04-26 15:39:03
这是一个非常敏感的话题,每个人都有不同的意见。只要看看'Go'式的方法('throw'终止任务,所以不需要有明显的类型)与'Java'方法及其非常复杂的层次结构。 – 2012-04-26 15:39:54