두 작업 모두 예외를 throw 할 수있는 && operator 작업을 사용하여 두 가지 pplx 작업에 참가하려고합니다.카사 블랑카에서 여러 작업의 예외를 잡는 방법
나는 ppl documentation에서 최종 작업 기반 연속에서 예외를 잡을 수 있음을 알고 있습니다. 이것은 카사 블랑카에서도 잘 작동합니다. 그러나 마지막 단 하나의 예외 만 잡을 수 있습니다. 두 하위 작업이 모두 처리되면 하나는 처리되지 않은 상태로 남습니다.
여기 내 문제를 설명하기위한 최소한의 예입니다 :
#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/캐치 먼저 발생하는 두 가지 예외의 어느 잡을 수있다. 어떻게 다른 걸 잡을 수 있니?