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 次 |
| 最近记录: |