No, the first example is absolutely right.
When an exception occurs in a Task, it ends in an AggregateException. Only when another thread joins the task, in this example, task1.Wait () is called - this is the exception associated with the join thread. Essentially, the exception is βstoredβ until it is passed back to the thread waiting for feedback.
source share