在并行区域内使用“抛出异常”是否可以?
当一个线程抛出异常时,其余线程会发生什么?
代码:
#pragma omp parallel for
for(int i = 0; i < n; i++)
{
if(arr[i] < 0)
throw BadParameter("bad array value");
}
答案 0 :(得分:5)
在并行区域内执行的throw必须导致执行在同一个并行区域内恢复,并且必须由抛出异常的同一线程捕获。
否则它将传播到未处理的异常。