Fra*_*ank 33 c++ error-handling inheritance exception
我有一些特殊的异常情况,我想抛出并捕获,所以我想定义自己的异常类.
有什么最好的做法?我应该继承std::exception
还是std::runtime_error
?
sth*_*sth 26
是的,这是很好的做法,继承从std::runtime_error
或其他标准的异常类一样std::logic_error
,std::invalid_argument
等等,这取决于哪种例外的是.
如果所有异常都从某种方式继承,std::exception
那么很容易通过a捕获所有常见错误catch(const std::exception &e) {...}
.如果你有几个独立的层次结构,这会变得更加复杂.从专门的异常类派生会使这些异常带来更多信息,但这实际上有多么有用取决于您如何进行异常处理.
我不是C++开发人员,但我们在C#代码中做的一件事是为我们的框架创建一个基类异常,然后记录构造函数中抛出的异常:
public FrameworkException(string message, Exception innerException)
: base(message, innerException)
{
log.Error(message, innerException);
}
...
Run Code Online (Sandbox Code Playgroud)
任何派生异常只需调用它的基本构造函数,我们就可以获得一致的异常日志记录.没什么大不了的,但很有用.
归档时间: |
|
查看次数: |
11808 次 |
最近记录: |