Hat jemand mit Fällen konfrontiert, wenn AggregateException.InnerExceptions.Count 1?

8

Ich frage mich, hat jemand mit Fällen konfrontiert, wenn AggregateException.InnerExceptions.Count & gt; 1?

Zum Beispiel umschließt TPL die Ausnahme, die im Aufgabenhauptteil in AggregateException ausgelöst wurde. Aber ich habe niemals Situationen gesehen, wo es mehr als eine innere Ausnahme gab.

Wie kann das mit TPL erreicht werden?
Wie kann dies erreicht werden mit any FCL (oder einer anderen weit verbreiteten Bibliothek) Klassen (Beispiele werden nützlich sein)?

Ich weiß, dass es Möglichkeit gibt, eine solche Instanz von AggregateException zu erstellen, aber die Frage betrifft eine Übung. Ich frage danach, weil ich verstehen möchte, wie man am besten mit AggregateException umgehen kann.

    
Dennis 23.04.2013, 13:55
quelle

2 Antworten

8

Der typische Fall ist, wenn eine Aufgabe von mehreren Aufgaben abhängig ist und mehr als eine dieser Aufgaben Ausnahmen auslöst. Zum Beispiel:

%Vor%     
Ani 23.04.2013, 14:01
quelle
1

Wie Ani gesagt hat, können diese AggregateExceptions über mehrere aufeinanderfolgende Task s erstellt werden, indem Fortsetzungen verwendet werden, um die Ausnahmen zu beobachten.

%Vor%

Normalerweise würden Sie das AggregateException innerhalb einer Fortsetzung behandeln. Eine Fortsetzung kann herausfinden, ob der Antezedent Task durch die Exception-Eigenschaft der Antecedent-Task eine Exception ausgelöst hat. Der folgende Ausdruck gibt die Ergebnisse von NullReferenceException auf der Konsole aus

%Vor%

Wenn task1 eine Ausnahme auslöst und diese Ausnahme von der Folge nicht erfasst / abgefragt wird, wird sie als unbehandelt betrachtet und die Anwendung stirbt. Bei Fortsetzungen genügt es, das Ergebnis der Aufgabe über das Schlüsselwort Status

zu ermitteln %Vor%

Wo ich oben nur eine einzige Ausnahme erwarte - um sicherzustellen, dass dies der Fall ist, kann ich Flatten() . Wenn Sie andere Arten von Ausnahmen erwarten, können Sie die InnerException s nach Bedarf durchlaufen.

Ich hoffe, das hilft.

    
MoonKnight 23.04.2013 14:13
quelle

Tags und Links