Here's some interesting reading on the challenges of and possible strategies for dealing with exceptions in concurrent versions of C++. The try...catch...finally model of exception handling introduces its own control flow. How will that interact with concurrent models in which you're passing around a "future" (essentially, an IOU that can be cashed in for the results of a calculation)? Even more practically, as the number of cores increase, the possibility of simultaneous exceptions rises (probably dramatically, since the worked-out assumptions of normal control-flow no longer hold). Among other things, this paper proposes "reduction functions" that create "compound exceptions." Interesting stuff.