C ++处理多个异常集合的方法?

时间:2018-11-06 02:21:41

标签: c++ exception-handling aggregateexception

在C ++ 17中,什么是处理多个异常集合的正确模式/方法?

是否存在与C#AggregateException Class等效的C ++?

(我知道作为流控制的异常是一种反模式。)

1 个答案:

答案 0 :(得分:0)

这不是我在c ++中看到的常见问题。如果您打算将库用于多线程/多核处理,则可能不希望查看该库提供的内容或如何处理异常。如果您只需要这种功能,则可以执行以下操作(伪代码):

struct AggregateExcpetions {
  std::vector< std::variant< exception_type_1, exception_type_2, exception_type_3 > > m_exceptions;
}

使用通用的基类(例如std::exceptionstd::runtime_error)可能会更容易,而不是使用变体。

struct AggregateExcpetions {
  std::vector< std::unique_ptr<std::exception> > m_exceptions;
}