In principle, any exception that may be thrown during execution of the method and that is explicitly handled thereafter can be dealt with by catching such an exception in the run()-method of a tree-worker, storing this exception in an additional field e_x of the tree-worker, and re-throwing a caught exception in the join-construct generated during the second step (see section 3.2.2) as follows:
In this manner, the exception is caught and re-thrown by tree-workers until eventually the exception is explicitly handled in the body of the method or the exception reaches the main thread that initiated the parallel executed and is handled thereafter. A single field of type java.lang.Exception can be used if explicit handling for all kinds of exceptions is provided, or some different fields in the loop-worker can be used to deal specifically with various types of exceptions. In any case, however, because invocations of a parallel multi-way recursive method are executed in an unpredictable order, the programmer must be aware that after parallelization, no assumptions about which invocations have or have not been executed successfully can be made in any subsequent explicit exception handling. Hence, if the order in which exceptions in the method may be thrown is essential, parallelization should be disabled.