一般に、ソフトウェア設計において、データベースやファイルなどのリソースに問題やエラーが発生した場合、次のどのオプションが優先されますか?
- エラーメッセージを表示
- エラー メッセージを表示せず、リソースが空であるかのように動作します (例: GUI コンポーネントを設定しません)]
たとえば、空の DataGrid が表示された後に文句を言うべきか、それともエラー メッセージが表示されるべきか? どちらが良いですか?
一般に、ソフトウェア設計において、データベースやファイルなどのリソースに問題やエラーが発生した場合、次のどのオプションが優先されますか?
たとえば、空の DataGrid が表示された後に文句を言うべきか、それともエラー メッセージが表示されるべきか? どちらが良いですか?
私はこれをどちらか/またはとして見ません。また、システムのすべての「ユーザー」を考慮する必要があります。
まず、UI を検討します。不自然な一般的なケースを考えてみましょう: サービスを呼び出すことによって UI を生成し、そのサービスはいくつかのデータベース (たとえば、「現在のデータ」と「履歴データ」) データベースを使用します。
少なくとも次の可能性があります。
次に、アプリケーションのセマンティクスも考慮してください。すべてのデータを取得できない場合、アプリケーションは「劣化」モードで続行できますか? たとえば、履歴を照会することはできませんが、新しいアイテムの作成を止めることはできません。
ここで役割についても考えてみましょう。UI を使用する人がいて、問題を把握して修正する必要があるサポートおよびメンテナンスの人もいます。
私の一般的なルール:
ヒストリカ データは現在利用できません
また
情報の取得中に問題が発生しました。問題が解決しない場合は、サポートにお問い合わせください...
各オプションにはいくつかの落とし穴があります
これは、アプリケーションがテスト段階または公開テストにある場合に特に役立ちます。また、クライアントがエラーに遭遇した場合、詳細をコピーして転送することもできます。
ただし、このエラー メッセージは非常に見苦しく (コール スタックなど - ASP.NET を覚えていますか?)、非常に大きくなり、クライアントが詳細をコピーするのが困難になることがあります。
これは、エラー メッセージがソフトウェアの UI 設計を混乱させたくない場合に役立ちます。ただし、クライアントが実際のエラーと GUI 上で何も区別できない場合、それは難しくなり、さらにエラーが発生しやすくなることを思い出してください。エラーはそこに残り、何も修正されません。
両方の長所を活用してください。実際、最新のアプリケーションのほとんどは、非常に優れたエラー処理プロセスを備えています。Mozilla Firefox 3 の例を取り上げます。
または、エラーが警告または重大度の低い場合:
簡単なエラー コードを表示し、そのアクションでエラーが発生したことをユーザーに伝えます。次のようなもの:「RequestSalary() 行 2 でエラー 123」
私が通常使用する練習は次のとおりです。
IMO メッセージを表示する必要があります (ただし、「java.io.IOException: Connection timed out」のようなものではなく、ユーザー フレンドリーなものです)。データの取得中にエラーが発生したことをユーザーに通知し、役立つヒントを提供するメッセージ ボックスを表示できます。のような: しばらくしてから試して、ネットワーク ケーブルなどを確認してください。また、ユーザーが実際のエラーとスタック トレースを送信するエラーを報告できるようにします (エラー報告はアプリに組み込まれています)。