我该如何实现我的C++异常?

Ven*_*emo 3 c++ exception-handling exception shared-libraries

假设我有一个C++库.在某些情况下,库会抛出异常.我想让这个库的用户能够捕获这些异常并告诉出现了什么问题.处理它的最佳方法是什么?我想出了以下可能的解决方案:

  1. 只需将标准异常类与自定义错误消息一起使用即可.然而,这会让抓住异常的人告诉错误是令人讨厌的.
  2. 创建一个子类std::exception并抛出它.添加某种错误代码(可能是枚举?还是宏?),以便用户可以检查出错的地方.
  3. 创建多个异常子类:每个异常子类可以抛出一个异常.这似乎是一个很好的想法,但我认为为每个可能的错误创建一个子类太过分了.

我无法真正决定.什么是正确的方法?

Lig*_*ica 7

3.创建多个异常子类:每个异常子类可以抛出一个异常.这似乎是一个很好的想法,但我认为为每个可能的错误创建一个子类太过分了.

这就是你说的原因:你的用户可以准确地捕捉他们想要捕获的内容.

简而言之,使用例外用途.

2.创建一个子类std::exception并抛出它.添加某种错误代码(可能是枚举?还是宏?),以便用户可以检查出错的地方.

你不妨在扔一点这种做法,其中一个语义类型的异常有"子类别"或其他辅助数据,你从来没有要过滤的,但可能是你的用户二次兴趣.