title: Ignore the Tasks throwing Exceptions at Task.WhenAll and get only the completed results
body: <p>I am working on a Task parallel problem that I have many Tasks that may or may not throw Exception.</p>
  
  <p>I want to process all the tasks that finishes properly and log the rest. The <code>Task.WhenAll</code> propage the Task exception without allowing me to gather the rest results.</p>
  
  <pre><code>    static readonly Task&lt;string&gt; NormalTask1 = Task.FromResult("Task result 1");
      static readonly Task&lt;string&gt; NormalTask2 = Task.FromResult("Task result 2");
      static readonly Task&lt;string&gt; ExceptionTk = Task.FromException&lt;string&gt;(new Exception("Bad Task"));
      var results = await Task.WhenAll(new []{ NormalTask1,NormalTask2,ExceptionTk});
  </code></pre>
  
  <p>The <code>Task.WhenAll</code>  with throw the Exception of <code>ExcceptionTk</code> ignoring the rest results. How I can get the results ignoring the Exception and log the exception at same time?</p>
  
  <p>I could wrap the task into another task that <code>try{...}catch(){...}</code> the internal exception but I don't have access to them and I hope I will not have to add this overhead.</p>