Ich lade Daten mit einem Task
. Im Falle eines Fehlers möchte ich dem Benutzer die Grundursache des Fehlers zeigen.Wie bekomme ich die Ursache des Ausnahmefehlers von einer AggregatedException
Ausnahmen, die bei der Ausführung Task
auftreten, werden zu einer AggregatedException
zusammengefasst. Also, was ist der beste Weg, um die Wurzel zu bekommen, die eine Ausnahme verursacht?
Mein aktueller Ansatz ist:
public static Exception GetRootCausingException(this AggregateException aggregatedException)
{
if (aggregatedException == null)
return null;
// get the AggregateException that is the root cause of this exception.
var exception = aggregatedException.GetBaseException();
while (exception.InnerException != null) exception = exception.InnerException;
return exception;
}
Die innerste Ausnahme oft nicht sinnvoll ist. Die äußeren fügen oft hinzu oder interpretieren Informationen. Sie sollten wahrscheinlich das Aggex entfernen und dann alle Ausnahmen (z. B. ToString) anzeigen. – usr