My understanding is that when a Task throws an exception, it's get stored and re-thrown when either one of (Result, WaitAll) property of Tasks is observed or when GC happened. Given that, I run following code.

```
Task t = Task.Factory.StartNew(() =>
{                    
    throw new Exception("Hello World");
});

for (int i = 0; i < 10000; i++)
{
    Console.WriteLine(i);
}    

 GC.Collect();

 for (int a = 20; a < 30; a++)
 {
      Console.WriteLine(a);
 }

```

But when I run the code above, I except an exception to be thrown at GC.Collect but it does not happen, rather it continues to print output from the second loop. Where is my understanding wrong here?