Ich hatte gehofft, jemand könnte mich ein wenig über ein Problem aufklären, das ich in Bezug auf async / erwarten Exception Handling mit HttpClient. Ich habe einen Code zur Veranschaulichung geschrieben, der sowohl auf einem Windows Phone 8-Gerät als auch auf dem Emulator ausgeführt wird:
%Vor%Durch Antippen der Schaltfläche, die diese Funktion aufruft, wird die folgende Ausgabe in der Debugger-Konsole erstellt, wobei die interessantesten in fett :
sindBEGIN FEHLERANFRAGE:
Eine Ausnahme vom Typ 'System.Net.WebException' ist in System.Windows.ni.dll aufgetreten und wurde nicht vor einer verwalteten / nativen Grenze behandelt
Eine Ausnahme vom Typ 'System.Net.WebException' ist in System.Windows.ni.dll aufgetreten und wurde nicht vor einer verwalteten / nativen Grenze behandelt
In mscorlib.ni.dll
ist eine Ausnahme der ersten Chance vom Typ 'System.Net.Http.HttpRequestException' aufgetretenEine Ausnahme vom Typ 'System.Net.Http.HttpRequestException' ist in mscorlib.ni.dll aufgetreten und wurde nicht vor einer verwalteten / nativen Grenze behandelt
GEWACHSENE AUSNAHME: (und hier wird die HttpRequestException ausgegeben)
Natürlich erwarte ich in diesem Fall einen Fehler, da die URL, die ich anrufe, Unsinn ist. Was ich hier nicht verstehe, ist, warum der Debugger meldet, dass die Ausnahmen nicht behandelt werden, wenn die Ausgabe gleichzeitig meldet, dass die Ausnahme abgefangen wurde. Außerdem reagiert die UI-Seite der App während des Druckens der Ausgabe nicht mehr so schnell, was darauf hindeutet, dass etwas nicht stimmt.
Ist das nicht die Möglichkeit, Ausnahmen beim Arbeiten mit Async zu behandeln und abzuwarten? Ich schätze jeden Input! Danke.
Dies ist ein Artefakt des Debuggers. Es bestimmt, dass eine Ausnahme "nicht abgefangen" wird, weil sie noch nicht abgefangen wurde . In diesem Fall ist dies das erwartete Verhalten.
Sie behandeln die Ausnahmen korrekt.
Der Debugger sagt Ihnen, dass diese Ausnahme die erste Chance ist. Wenn ein Debugger an Ihren Prozess angehängt ist, wird er für jede ausgelöste Exception benachrichtigt und basierend darauf, wie der Debugger konfiguriert wurde, wird er entscheiden, was damit geschehen soll. Sie können Was ist die erste Chance? für weitere Details.
Beachten Sie außerdem nur bestimmte Ausnahmen, damit Sie verstehen, welche Ausnahmen Sie erwarten und warum.
Tags und Links .net c# windows-phone-8 async-await asynchronous