私は2つのサブタスクが例外をスローする可能性があるタスクの&& operatorを使用して2つのpplxタスクに参加しようとしています。カサブランカの複数のタスクから例外をキャッチする方法
私はppl documentationから、最終的なタスクベースの継続で例外を検出できることを理解しています。これはカサブランカでも同様に機能します。 しかし、私は最後の継続でただ1つの例外をキャッチすることができます。両方のサブタスクが投げた場合、一方は未処理のままである。ここで
は私の問題を説明するための最小限の例です:
#include <pplx/pplxtasks.h>
#include <iostream>
int main(int argc, char *argv[])
{
int a = 0; int b = 0;
auto t1 = pplx::create_task([a] { return a+1; })
.then([](int a) { throw std::runtime_error("a");
return a+1; });
auto t2 = pplx::create_task([b] { return b+1; })
.then([](int b) { throw std::runtime_error("b");
return b+1; });
(t1 && t2)
.then([] (std::vector<int>) { /*...*/ })
.then([] (pplx::task<void> prev) {
try {
prev.get();
} catch (std::runtime_error e) {
std::cout << "caught " << e.what() << std::endl;
}
});
std::cin.get();
}
のtry/catchが最初に発生2つの例外のいずれかをキャッチすることができます。どのように私は他をキャッチすることができますか?