TL; DR - Nein , Sie sollten Ausnahmen nicht einfach leise ignorieren.
Schauen wir uns die Annahmen an.
Ich habe gelernt zu vertrauen, dass viele der Entscheidungen in .NET von Leuten getroffen wurden, die wirklich wissen, was sie tun, und es gibt normalerweise einen sehr guten Grund für die Dinge, die sie entscheiden. Aber dieser entgeht mir.
MS hat zweifellos einige wirklich brillante Mitarbeiter. Sie haben auch eine Reihe von Managern und Führungskräften, die ... ahnungslos sind und durchweg schlechte Entscheidungen treffen. So sehr wir dem Märchen des technisch versierten Wissenschaftlers glauben möchten, der die Produktentwicklung vorantreibt, ist die Realität weitaus düsterer.
Mein Punkt ist, wenn Ihr Instinkt Ihnen sagt, dass etwas möglicherweise nicht stimmt, besteht eine gute Chance (und ein früherer Präzedenzfall), dass es falsch ist.
- Dass dies ein technisches Problem ist
Der Umgang mit Ausnahmen ist in diesem Fall eine Entscheidung über menschliche Faktoren, keine technische Entscheidung. Eine Ausnahme ist locker ein Fehler. Die Darstellung des Fehlers liefert dem Endbenutzer wichtige Informationen, auch wenn diese schlecht formatiert sind. Es ist nämlich etwas schief gelaufen.
Betrachten Sie diese hypothetische Konversation zwischen einem Endbenutzer und einem Entwickler.
Benutzer: Die App ist kaputt.
Dev: Was ist kaputt?
Benutzer: Ich weiß nicht, ich klicke auf die Schaltfläche und nichts passiert.
Dev: Was meinst du damit, dass nichts passiert?
Benutzer: Schau, ich klicke, ich warte und ich warte und ich warte und nichts ... es ist offensichtlich kaputt.
Unser armer, glücklicherweise hypothetischer Entwickler muss jetzt herausfinden, was in der Kette der Ereignisse schief gelaufen ist. Wo war es?
Event-Handler-Benachrichtigung -> Routine zur Behandlung des Ereignisses -> Vom Handler ausgelöste Methode -> Beginn des asynchronen Aufrufs -> die 7 Schichten des OSI-Netzwerks -> physische Übertragung -> Sichern der 7 Schichten des OSI-Netzwerks -> Empfangsdienst -> vom Dienst aufgerufene Methode -> ... -> vom Dienst gesendete Antwort zurückgeben -> .... -> asynchrone Quittung -> Verarbeitung der asynchronen Antwort -> ...
Und bitte beachten Sie, dass ich dort einige mögliche Fehlerpfade beschönigt habe.
Nachdem ich einige der zugrunde liegenden Annahmen angesprochen habe, wird mir klarer, warum es eine schlechte Idee ist, Ausnahmen stillschweigend zu unterdrücken. Eine Ausnahme und die damit verbundene Fehlermeldung sind ein Schlüsselindikator für die Benutzer, dass ein Fehler aufgetreten ist. Selbst wenn die Nachricht für den Endbenutzer bedeutungslos ist, können die eingebetteten Informationen für den Entwickler hilfreich sein, um zu verstehen, was schief gelaufen ist. Wenn sie Glück haben, führt die Nachricht sogar zur Lösung.
Ich denke, ein Teil des Problems hier ist, dass eine falsch behandelte Ausnahme Ihre Anwendung zum Absturz bringt. Durch Unterdrücken der Ausnahmen stürzt die Anwendung nicht ab. Dies hat jedoch eine gewisse Gültigkeit, da der asynchrone Punkt darin besteht, der Anwendung zu ermöglichen, weiter zu arbeiten, während Daten abgerufen werden. Es ist keine logische Erweiterung zu sagen, dass ein Fehler beim Abrufen auch die Anwendung nicht zum Absturz bringen sollte, wenn Sie während des Wartens auf die Ergebnisse weiterarbeiten könnten - der asynchrone Aufruf wird implizit als nicht wichtig genug deklariert, um die Anwendung zu beenden.
Es ist also eine Lösung, aber es löst das falsche Problem. Es ist nicht so aufwendig, einen Wrapper für die Ausnahmebehandlung bereitzustellen, damit die Anwendung weiterhin ausgeführt werden kann. Die Ausnahme wird abgefangen, eine Fehlermeldung wird auf dem Bildschirm angezeigt oder protokolliert, und die Anwendung kann weiter ausgeführt werden. Das Unterdrücken der Ausnahme bedeutet, dass das Ignorieren von Fehlern A-OK ist und dass Ihre Tests sicherstellen, dass Ausnahmen sowieso nie ins Feld gelangen.
Meine abschließende Einschätzung ist also, dass dies ein halbherziger Versuch ist, ein Problem zu lösen, das dadurch entsteht, dass Menschen in ein asynchrones Modell gedrängt werden, wenn sie nicht bereit waren, ihr Denken auf diesen Ansatz zu verlagern.