I am working on a Task parallel problem that I have many Tasks that may or may not throw Exception.

I want to process all the tasks that finishes properly and log the rest. The `Task.WhenAll` propage the Task exception without allowing me to gather the rest results.

```
    static readonly Task<string> NormalTask1 = Task.FromResult("Task result 1");
    static readonly Task<string> NormalTask2 = Task.FromResult("Task result 2");
    static readonly Task<string> ExceptionTk = Task.FromException<string>(new Exception("Bad Task"));
    var results = await Task.WhenAll(new []{ NormalTask1,NormalTask2,ExceptionTk});

```

The `Task.WhenAll` with throw the Exception of `ExcceptionTk` ignoring the rest results. How I can get the results ignoring the Exception and log the exception at same time?

I could wrap the task into another task that `try{...}catch(){...}` the internal exception but I don't have access to them and I hope I will not have to add this overhead.