1. A method of handling an exception in a parallel system, comprising: constructing a task object; executing a method with the task object; catching an exception with the task object during execution of the method; causing the exception to be propagated in response to the task object becoming inaccessible without the exception having been observed; creating a monitoring object with the task object in response to the exception, wherein the monitoring object is configured to re-throw the exception; and wherein the monitoring object is configured to re-throw the exception in response to the task object becoming inaccessible by being garbage collected without the exception having been observed.