繁体   English   中英

在头文件中包含异常类

[英]Including an exception class in a header file

我有一对定义类的文件,例如Foo.cppFoo.hpp ,例如Foo Foo的方法必须抛出一个异常,在文件中定义的潜在MyException.hpp ,但Foo.hpp 不需要 MyException

显然.cpp需要包含异常标头,但是我应该在Foo.hpp包含异常标头,以允许任何使用Foo文件定义异常吗?

通常的经验法则是,每个文件都应包含所需的标题。 因此,不,除非在那里需要,否则不要将MyException.hpp添加到Foo.hpp 处理您的异常类的代码应#include "MyException.hpp" 因此,显然,无论哪个文件实现引发此异常的成员函数都需要include "MyException.hpp" ,并且任何包含捕获此异常的代码的文件也都需要它。

我假设您从std :: exception派生自定义异常。

现在有两个用例(我想):

  • 唯一的例外是提供信息,无法采取任何措施来解决它。 因此,没有人会关心实际的类型(您可以将其保留为源)。
  • 异常是特定的,可以采取措施解决该异常:在标头中将异常类型设为公开。

我见过的大多数异常都是有益的,没有什么可以解决受影响对象的状态的。

使每个.h文件自给自足是一种好样式,因此每个标头都将包括/提供其所需的所有功能。 鉴于此,在Foo.hpp包含MyException.hppFoo.hpp 这样, Foo.h用户Foo.h将其包含在代码中就不会承受编译时错误。

在Foo.hpp文件中仅包括MyException.hpp标头。 让您的Foo.cpp仅包含Foo.hpp标头。 .cpp文件仅用于实现头文件中声明的接口。 .cpp不应包含其自己的标头中的任何其他包含部分。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM