Es gibt drei verschiedene Fehlerszenarien:
a) Sie konnten keine Verbindung zum Server oder Proxy herstellen. In diesem Fall wird eine HttpRequestException ausgelöst. Seien Sie sich bewusst, wenn Ihr Server ausgefallen ist und Sie fiddler ausführen, Sie werden diese Ausnahme nie sehen, Sie werden einen 5XX Statuscode bekommen.
b) Beim Lesen / Schreiben eines Netzwerkstreams gibt es eine Art von Unterbrechung, bei der Sie eine IOException erhalten.
c) Sie erhalten eine Antwort mit einem HttpStatusCode mit einem 4XX / 5XX Statuscode zurück. Wenn Ihre Clientanwendung response.EnsureSuccessStatusCode () aufruft, wird eine HttpRequestException ausgelöst.
Wenn Sie sich entscheiden, EnsizeSuccessStatusCode aufzurufen, treffen Sie eine explizite Entscheidung, dass Sie keine anderen Statuscodes als die Tatsache, dass es erfolgreich / fehlgeschlagen ist, interessieren.
Wenn Sie wirklich eine Exception aufblasen und später den Statuscode verarbeiten müssen, schlage ich vor, dass Sie Ihre eigene Erweiterungsmethode erstellen, um EnsureSuccessStatusCode zu ersetzen und eine eigene Exception zu erstellen, die den Statuscode speichern kann. Oder wandeln Sie den Statuscode vorzugsweise in eine der wenigen Ausnahmen um, die auf den Korrekturmaßnahmen basieren, die Sie ergreifen möchten.