TL; DR- いいえ、例外を静かに無視するだけではいけません。
仮定を見てみましょう。
.NETでの決定の多くは、自分が何をしているのかを本当に理解している人たちによって行われたものであり、通常、彼らが決定することの背後には非常に正当な理由があると信じています。しかし、これは私を逃れます。
確かに、MSには素晴らしい人材がいます。彼らにはまた、無知であり、一貫して悪い決定を下すマネージャーやエグゼクティブが多数います。製品開発を推進する技術に精通した科学者のおとぎ話を信じたいのと同じくらい、現実ははるかに厳しいです。
私のポイントは、あなたの本能が何かが間違っているかもしれないと言った場合、それが間違っている可能性が高い(そして過去の前例)場合です。
この場合の例外の処理方法は、技術的な決定ではなく、人的要因の決定です。大まかに言うと、例外はエラーです。エラーの表示は、フォーマットが不十分であっても、エンドユーザーに重要な情報を提供します。つまり、問題が発生しました。
エンドユーザーと開発者の間の架空の会話について考えてみましょう。
ユーザー:アプリが壊れています。
Dev:何が壊れていますか?
ユーザー:わからない。ボタンをクリックしても何も起こらない。
Dev:何も起こらないとはどういう意味ですか?
ユーザー:見て、クリックして、待って、待って、待って、何も...明らかに壊れています。
私たちの貧しい、幸運なことに架空の開発者は、イベントのチェーンで何がうまくいかなかったかを理解する必要があります。どこにあったの?
イベントハンドラー通知->イベントを処理するルーチン->ハンドラーによってトリガーされるメソッド->非同期呼び出しの開始-> OSIネットワークの7層->物理送信-> OSIネットワークの7層のバックアップ->サービスの受信->サービスによって呼び出されるメソッド-> ...->サービスによって送信された返信を返す-> ....->非同期受信->非同期応答の処理-> ...
そして、私はそこにいくつかの潜在的なエラーパスをつぶしたことに注意してください。
いくつかの根本的な仮定に対処した後、例外を静かに抑制することが悪い考えである理由がより明らかになると思います。例外と関連するエラーメッセージは、何かがうまくいかなかったことをユーザーに示す重要な指標です。メッセージがエンドユーザーにとって意味がない場合でも、埋め込まれた情報は、開発者が何が問題だったかを理解するのに役立ちます。運が良ければ、メッセージは解決策につながることさえあります。
ここでの問題の一部は、誤って処理された例外がアプリケーションをクラッシュさせることだと思います。例外を抑制することにより、アプリケーションはクラッシュしません。非同期のポイントは、データが取得されている間、アプリケーションが機能し続けることを可能にすることなので、これにはある程度の妥当性があります。結果を待っている間も操作を続けることができれば、検索の失敗によってアプリケーションがクラッシュすることはないというのは、論理的な拡張ではありません。非同期呼び出しは、アプリケーションを終了するほど重要ではないと暗黙的に宣言されています。
したがって、これは解決策ですが、間違った問題を解決しています。アプリケーションを実行し続けることができるように、例外処理にラッパーを提供するのにそれほどの労力は必要ありません。例外がキャッチされ、エラーメッセージが画面にスローされるか、ログに記録され、アプリケーションは実行を継続できます。例外を抑制することは、エラーを無視することはA-OKになることを意味し、テストは例外がとにかくフィールドにエスケープされないことを確認します。
したがって、私の最終的な評価は、思考をそのアプローチにシフトする準備ができていないときに人々を非同期モデルに押し込むことによって作成された問題を解決しようとする中途半端な試みであるということです。