0

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

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

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

4

1 回答 1

0

这不是我在 C++ 中看到的常见问题。如果您计划使用一个库进行多线程/多核处理,您可能不想检查该库提供的内容或如何处理异常。如果您自己只需要这种能力,您可以执行以下操作(伪代码):

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

与其使用变体,不如使用通用基类可能更容易——例如std::exception,或者也许std::runtime_error

struct AggregateExcpetions {
  std::vector< std::unique_ptr<std::exception> > m_exceptions;
}
于 2018-11-06T07:52:52.200 回答