在 C++17 中,处理多个异常集合的正确模式/方法是什么?
是否有与 C# AggregateException Class等效的 C++ ?
(我知道作为流控制的异常是一种反模式。)
这不是我在 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;
}