理論的には、エンド ユーザーに内部エラーが表示されることはありません。しかし実際には、理論と実践は異なります。問題は、エンド ユーザーに何を表示するかです。ここで、まったく技術に詳しくないユーザーの場合は、表示される情報をできるだけ少なくしたいと考えていますが (「ここをクリックしてバグ レポートを送信する」など)、上級ユーザーの場合は回避策があるかどうかを知りたがります、それがしばらくの間知られている場合など。そのため、何が問題なのかについてのある種の情報も含めたいと考えています。
これを行う古典的な方法は、filename:line-number を使用した assert または同じスタック トレースのいずれかです。これは開発者にとって良いことです。ただし、ユーザーにとってはいくつかの重大な欠点があります。特に、非常に不可解であり (不親切など)、コードを変更するとエラー メッセージが変更されます (エラーのグーグル検索はこのバージョンでのみ機能します)。
これらの問題に対処したい場所で書くことを計画しているプログラムがあります。私が欲しいのは、アサートの周りのコードを編集しても変更されないように、すべてのアサートに一意の ID を付ける方法です。(たとえば、別のファイルにカット/ペーストした場合、同じ情報が表示されるようにしたい) 何かアイデアはありますか?
私が考えている 1 つの方法は、エラーを列挙することですが、それらが複数の場所で使用されないようにする方法は?
(注:この質問では、コーディングエラーによって引き起こされたエラーのみを見ています。不正な入力のように合法的に発生する可能性があるものではありません。OTOHこれらのエラーは、コミュニティ全体にとって何らかの関心があるかもしれません。)
(注 2: 問題のプログラムは、ユーザーのシステムで実行されているコマンド ライン アプリです。ただし、これも私の状況です。)
(注 3: ターゲット言語はDであり、メタプログラミングに飛び込みたいと思っています。他の言語の回答は大歓迎です!)
(注 4: 実際のコードの場所ではなく、エラーに何らかの記号名を使用することを明示的に望んでいます。これは、コードが実質的に何らかの方法で変更されると、コードの場所が変更されるためです。)