今日でも、プロのチームによって構築された、長年使用されてきた製品が、今日までまだ、ユーザーに役立つエラーメッセージを提供できないことに驚かされます。場合によっては、ほんの少しの追加情報を追加するだけで、ユーザーの時間を節約できます。
エラーを生成するプログラムが、何らかの理由で生成しました。何が失敗したのか、ユーザーにできる限り多くの情報を提供するために、すべてを自由に使用できます。それでも、ユーザーを支援する情報を提供することは優先度が低いようです。これは大きな失敗だと思います。
1つの例はSQL Serverからのものです。使用中のデータベースを復元しようとすると、まったく問題が発生します。SQL Serverは、どのプロセスとアプリケーションがそれにアクセスしているかを知っています。データベースを使用しているプロセスに関する情報を含めることができないのはなぜですか?すべての人がApplicatio_Name
接続文字列で属性を渡すわけではないことは知っていますが、問題のマシンに関するヒントさえあれば役立つかもしれません。
別の候補であるSQL Server(およびmySQL)は、美しいstring or binary data would be truncated
エラーメッセージと同等のものです。多くの場合、生成されたSQLステートメントの単純な閲覧と、テーブルが原因の列を示します。これは常に当てはまるわけではありません。データベースエンジンがエラーを検出した場合、なぜその時間を節約できず、どの列が壊れているかを教えてくれないのでしょうか。この例では、それをチェックするとパフォーマンスが低下する可能性があり、これがライターを妨げると主張できます。結構です、私はそれを買います。データベースエンジンは、エラーがあることを認識すると、格納される値と列の長さを事後比較します。次に、それをユーザーに表示します。
ASP.NETの恐ろしいテーブルアダプタも有罪です。クエリを実行し、どこかで制約に違反していることを示すエラーメッセージを表示できます。ありがとう。開発者は行番号やサンプルデータを提供するのが面倒なので、データモデルとデータベースを比較する時間です。(記録のために、私は選択によってこのデータアクセス方法を決して使用しませんでした、それはただ私が継承したプロジェクトです!)。
C#またはC ++コードから例外をスローするたびに、手元にあるすべてのものをユーザーに提供します。それを投げる決定が下されたので、私が提供できる情報が多ければ多いほど良いです。関数が例外をスローしたのはなぜですか?何が渡され、何が期待されましたか?例外メッセージの本文に意味のあるものを入れるには少し時間がかかります。地獄、それは何もしませんが、私のコードは意味のあるものを投げることを知っているので、私が開発する間、私を助けます。
複雑な例外メッセージをユーザーに表示すべきではないと主張することができます。私はそれに反対しますが、それはあなたのビルドに応じて異なるレベルの冗長性を持つことで簡単になだめることができる議論です。それでも、ASP.NETおよびSQL Serverのユーザーは一般的なユーザーではなく、問題をより迅速に追跡できるため、冗長でおいしい情報に満ちたものを好むでしょう。
開発者がエラーが発生したときに最低限の情報を提供することは、この日と年齢で大丈夫だと思うのはなぜですか?
それは2011年の男だ、来るで。