問題タブ [error-handling]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
logging - エラーが致命的である場合のロギング時
log4j や log4net などのログ フレームワークでは、さまざまなレベルの情報をログに記録できます。ほとんどのレベルには明確な意図があります (「デバッグ」ログと「エラー」など)。ただし、私が常に臆病であったことの 1 つは、ログを「致命的」に分類することでした。
致命的と分類する必要があるほど重大なエラーのタイプはどれですか? これはわずかにケース ドリブンですが、例外を致命的としてログに記録するか、単にエラーとしてログに記録するかを決定する際に使用する経験則にはどのようなものがありますか?
c# - C#で複数のエラーを処理するには?
10個のレジストリキーを読み取るコードがいくつかあります。値が存在しない場合、キーが存在しない場合、値がブール値でない場合などがあります。これにエラー処理を追加するにはどうすればよいですか。現在、1つの大きな試行に配置されています{} catch{} ですが、2 番目に読み取った値が失敗した場合、プログラムが catch{} にジャンプするため、残りは読み取られません。それぞれに try{} catch{} を追加できますが、もっと良い方法があると思います. これをどのように処理しますか?似たような問題に定期的に遭遇するので質問しています。私自身の解決策は、try{} catch{} を追加することです。
助けてくれてありがとう。
jsf - アプリケーションのエラーを JSF で表示するにはどうすればよいですか?
私の JSF/Facelets アプリでは、フォームの一部を簡略化したものを次に示します。
continueButton() メソッドで起こっていることに基づいて、特定の h:message タグにエラーを割り当てられるようにしたいと考えています。newPassword と newPassword2 では、異なるエラーを表示する必要があります。結果を (DB から) 配信するメソッドは continueButton() メソッドで実行され、コストがかかりすぎて 2 回実行できないため、バリデーターは実際には機能しません。
ページにはさまざまなエラー メッセージを表示する必要がある複数の場所があるため、h:messages タグを使用できません。これを試したところ、ページにすべてのメッセージが重複して表示されました。
私はこれを最善の推測として試しましたが、運はありません:
私は何が欠けていますか?どんな助けでも大歓迎です!
error-handling - 内部エラー マーカー
理論的には、エンド ユーザーに内部エラーが表示されることはありません。しかし実際には、理論と実践は異なります。問題は、エンド ユーザーに何を表示するかです。ここで、まったく技術に詳しくないユーザーの場合は、表示される情報をできるだけ少なくしたいと考えていますが (「ここをクリックしてバグ レポートを送信する」など)、上級ユーザーの場合は回避策があるかどうかを知りたがります、それがしばらくの間知られている場合など。そのため、何が問題なのかについてのある種の情報も含めたいと考えています。
これを行う古典的な方法は、filename:line-number を使用した assert または同じスタック トレースのいずれかです。これは開発者にとって良いことです。ただし、ユーザーにとってはいくつかの重大な欠点があります。特に、非常に不可解であり (不親切など)、コードを変更するとエラー メッセージが変更されます (エラーのグーグル検索はこのバージョンでのみ機能します)。
これらの問題に対処したい場所で書くことを計画しているプログラムがあります。私が欲しいのは、アサートの周りのコードを編集しても変更されないように、すべてのアサートに一意の ID を付ける方法です。(たとえば、別のファイルにカット/ペーストした場合、同じ情報が表示されるようにしたい) 何かアイデアはありますか?
私が考えている 1 つの方法は、エラーを列挙することですが、それらが複数の場所で使用されないようにする方法は?
(注:この質問では、コーディングエラーによって引き起こされたエラーのみを見ています。不正な入力のように合法的に発生する可能性があるものではありません。OTOHこれらのエラーは、コミュニティ全体にとって何らかの関心があるかもしれません。)
(注 2: 問題のプログラムは、ユーザーのシステムで実行されているコマンド ライン アプリです。ただし、これも私の状況です。)
(注 3: ターゲット言語はDであり、メタプログラミングに飛び込みたいと思っています。他の言語の回答は大歓迎です!)
(注 4: 実際のコードの場所ではなく、エラーに何らかの記号名を使用することを明示的に望んでいます。これは、コードが実質的に何らかの方法で変更されると、コードの場所が変更されるためです。)
php - PHPで本番サイトからエラーを取得する最良の方法は何ですか?
ほとんどの本番サイトでは、エラーがいつ発生したかをできるだけ早く知りたいと考えています。私の質問は、この情報を取得する最善の方法です。
通常、エラーが発生するまで毎日座ってエラー ログを監視するわけではないため、エラーを電子メールで受け取るのがおそらく最善の方法です。異なるサーバーに 20 以上の運用サイトがあるため、これは不可能です。これらのエラーは、未設定の変数、無効なデータの受信、クエリ エラーなど、あらゆるものである可能性があります。
現時点では、ここにある PHP の Web サイトの例に従っています。その結果、電子メールで送信される XML ファイルと共にテキスト文字列が作成されます。これを少し変更して、スクリプトが終了するまですべてのエラーを保持し、XML ファイルを添付して電子メールを送信します。(ループ内のエラーが原因で、500,000 件以上の電子メールを送信するいくつかのメール サーバーがクラッシュしました。) ほとんどの場合、これは完全に機能します。(すべてのエラー処理を行うオブジェクトも作成しました。)
この問題は、プロセスに大量のデータがある場合に発生しwddx_serialize_value()
ます。そして、複数のエラーが発生した場合、多くの場合、スクリプトが使用できるよりも多くのメモリを実際に使用することになります。
gzcompress()
このため、変数内に格納する前に XML ファイルに追加を行いました。これは役に立ちますが、データ量が非常に多い場合は、依然としてメモリ不足になります。(最近のケースでは、約 2GB を使用したいと考えていました。)
これには他にどのような解決策があるのか 、それを機能させるためにこれをどのように変更したのか疑問に思っていますか?
したがって、いくつかの要件:
- エラーメッセージ以上のものを私に送信できる必要があり、サーバーにログインして何が起こったのかを把握する必要はありません(したがって、いつモバイルであるかを確認し、緊急の問題であるかどうかを判断できます)
- 送信されるメールの数に制限が必要です。最高はまだ1です。
- 通常どおりファイルにログを記録する必要があります
編集:エラー文字列だけでなく、エラーに関連する他の情報が必要です。多くの場合、エラーを再現することはほとんど不可能であることがわかります。これは、より多くの情報を取得しない限り、ユーザー入力が原因であることがわかりません。有益なエラーを入力するために最善を尽くしましたが、ユーザーがシステムをどのように使用するか、またはどのようながらくたデータを入力するかはわかりません。したがって、エラーテキスト/文字列だけでは不十分です。
編集2:データベースにエラーを記録できません。データベースが存在しない可能性があることがわかっているためです。実行がほぼ保証されているものが必要です。また、ウェブサイトはすべて1つのサーバー上にあるわけではなく、サーバー上のcronにアクセスできないことがよくあります(愚かなホスティング会社)。
php - PHPの各エラーレベルに含まれるもの
ここでPHPに見られるように、各エラーレベルに何が含まれているのか、基本的に疑問に思っています。例: 設定されていない変数またはキーはどこに落ちますか? または、パースはどこに落ちますか? これに関するPHP Webサイトまたは一般的なインターネットでドキュメントが見つからないようです。
編集:どのエラーがどのエラーレベル/タイプまたはその逆を引き起こすかのリストを探しています。
vba - VBAへのアクセス:エラー処理をリセットすることは可能ですか?
プログラムの最初の部分で使用しています
On Error GoTo start
私の第二部で私が再び使用していると仮定します
On Error Resume Next
この2番目のエラートラップは、最初のエラートラップがまだアクティブであるため、アクティブになりません。使用後に最初のエラーハンドラーを非アクティブ化する方法はありますか?
最後のステートメントの実行時に、エラーを無視して次のテーブルに移動したいのですが、エラー処理が機能していないようです。
php - 本番サーバーでphpエラーを抑制する最良の方法
PHPエラーがブラウザに表示されないようにする最良の方法は何ですか?
以下を使用することになりますか?
ベストプラクティスのヒントもいただければ幸いです。
エラーをログに記録しています。display_errors 値をオフ (または 0) に設定しても、エラーがログに記録されないようにしたいだけです。
error-handling - クラスのエラーが実行時にのみトラップされるのはなぜですか?
エラーを発生させるメソッドを持つVB6クラスがあります。
このメソッドは、次のフォームから呼び出されます。
これは実行時には正常に機能しますが、設計時にはエラー処理は機能しません。代わりに、VB6 IDEは、デバッグモードに入る、またはプログラムを終了できる標準のメッセージボックスを表示します。
なぜこれが起こるのですか?防げますか?
java - java.lang.Error をキャッチするタイミング
どのような状況でjava.lang.Error
アプリケーションをキャッチする必要がありますか?