問題タブ [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.
c++ - ライブラリ/アプリ コンボの C++ でのエラー処理/エラー ログ
私は何年にもわたって、次の問題パターンに頻繁に遭遇しました。
私は、スタンドアロン アプリケーションと、人々が他のアプリ内から使用できるコアのライブラリ バージョンで構成されるパッケージの複雑なコードを書いています。
私たち自身のアプリと、おそらくユーザーがコア ライブラリを使用して作成したアプリの両方が、バッチ モード (オフライン、スクリプト、リモート、および/またはコマンド ラインから) と対話型の両方で実行される可能性があります。
ライブラリ/アプリは複雑で大量のランタイム入力を受け取り、重大なエラー メッセージ、入力構文の警告、ステータス メッセージ、実行統計など、さまざまなエラーのような出力が発生する可能性があります。これらはすべて付随的な出力であり、別の方法で別の場所に表示または保存されるアプリケーションの主な目的ではないことに注意してください。
これらのいくつか (おそらく非常に深刻なもののみ) は、対話的に実行する場合、ダイアログ ボックスが必要になる場合があります。ただし、バッチ モードで実行する場合は、ユーザー入力を停止せずにログに記録する必要があります。また、ライブラリとして実行する場合、クライアント プログラムは明らかに、発生したエラーをインターセプトおよび/または調査する必要があります。
Linux、Windows、OSX など、すべてクロスプラットフォームである必要があります。また、どのプラットフォームでもソリューションが奇妙にならないようにしたいと考えています。たとえば、stderr への出力は Linux では問題ありませんが、Windows では GUI アプリにリンクすると機能しません。
ライブラリのクライアント プログラムはメイン クラスの複数のインスタンスを作成する場合があり、クライアント アプリが各インスタンスで個別のエラー ストリームを区別できると便利です。
ライブラリ メソッドが単純な呼び出し (エラー コードや重大度、エラー メッセージを出力する printf のような引数) でエラーをログに記録するだけで十分であることに誰もが同意すると仮定します。論争の的となる部分は、これがクライアント アプリによってどのように記録または取得されるかです。
私はこれを何年にもわたって何度も行ってきましたが、解決策に完全に満足することはありません. さらに、実際にはユーザーにとってそれほど重要ではない種類のサブ問題です (ユーザーは何か問題が発生した場合にエラー ログを見たいと思っていますが、それを実装するための私たちの手法についてはあまり気にしていません) が、トピックはプログラマーを興奮させます。そして、彼らは常にこの詳細に途方もない時間を浪費し、完全に満足することは決してありません.
この機能を C++ API に統合する方法について知恵を持っている人はいますか、または受け入れられたパラダイムまたは優れたオープン ソース ソリューション (GPL ではありません。商用のクローズド アプリや OSS で使用できるソリューションが必要です) はありますか?プロジェクト)?
c# - .NET Remoting の使用時に未処理の例外をキャッチする方法
特定の例外がクライアント/サーバーの境界を越えないように、サーバー上のリモート オブジェクトでスローされた未処理の例外をすべてキャッチし、カスタム例外に変換する前にログに記録したいと考えています。
カスタムチャンネル同期を使用する必要があると思いますが、これを確認したり、他のアドバイスをしたりできる人はいますか?
php - PHP で MySQL の警告を検出して処理できますか?
JobName 列を UNIQUE として定義する MySQL テーブルを扱っています。誰かがデータベースに既に存在する JobName を使用して新しいジョブをデータベースに保存しようとすると、MySQL は警告をスローします。
エラーのように、PHP スクリプトでこの警告を検出し、適切に処理できるようにしたいと考えています。理想的には、コードを分岐して処理できるように、MySQL がスローした警告の種類を知りたいです。
これは可能ですか?そうでない場合、MySQL にこの機能がないか、PHP にこの機能がないか、またはその両方が原因ですか?
.net - データベースがオフラインになったときにアプリをどのように管理しますか?
.Net Winforms App.. をとり、フレークなワイヤレス ネットワーク接続で混合し、青色のプラグをときどき引き抜くのが好きな数人のユーザーとかき混ぜ、適切な措置として、警告なしに SQL サーバー ボックスを再起動することを決定したシステム管理者を追加します。時々、みんなを緊張させないようにしています。
に関して、この種のシナリオを処理するための提案と戦略は何ですか:
エラー処理 - たとえば、サーバーへのすべての呼び出しを Try/Catch でラップしますか、またはこれを管理するために何らかの形式の一般的なエラー処理に依存しますか? もしそうなら、それはどのように見えますか?
アプリケーション管理 - たとえば、アプリを無効にして、接続が再び検出されるまでユーザーが操作できないようにしますか? あなたならどうしますか?
c# - C# からスタック トレース情報を出力する
製品のエラー処理の一部として、スタック トレース情報をダンプしたいと考えています。ただし、多くのユーザーは、プログラムから入手できる完全なレポートのコピーを送信する代わりに、エラー メッセージ ダイアログのスクリーンショットを撮るだけで済みます。そのため、このダイアログで最小限のスタック トレース情報を入手できるようにしたいと考えています。
私のマシンの .NET スタック トレースは次のようになります。
この質問があります:
形式は次のようになります。
ただし、atキーワードとinキーワードは、たとえば、インストールした英語の .NET ランタイムではなく、ノルウェー語の .NET ランタイムを実行する場合、ローカライズされると思います。
このスタック トレースを言語に依存しない方法で分離して、これを含むエントリのファイルと行番号のみを表示できるようにする方法はありますか?
つまり、上記のテキストから次の情報を取得したいと思います。
あなたが与えることができるアドバイスは役に立ちます。
php - PHP関数の引数エラー抑制、empty()isset()エミュレーション
この質問への答えはノーだと確信していますが、PHPの第一人者がいる場合に備えて
無効な引数または存在しない変数を渡すことができ、phpを使用せずにエラーが発生しないような方法で関数を作成することは可能ですか?'@'
空とissetのように。作成したばかりの変数を渡すことができ、エラーは発生しません。
java - Java でクラッシュ ログをキャプチャする方法
私は現在、Windows、Linux、および MacOS X でうまく動作する Java のクロスプラットフォーム アプリケーションに取り組んでいます。Java で「クラッシュ」を検出し、それに応じて何かを行う簡単なクロスプラットフォームの方法はありますか?
「クラッシュ」とは、キャッチされていない例外を意味すると思います。ただし、コードは一部の JNI を使用しているため、不適切な JNI コードからのクラッシュを検出できると便利ですが、それは JVM 固有のものだと感じています。
bash - Bash でのエラー処理
Bash でエラーを処理するためのお気に入りの方法は何ですか? 私が Web で見つけたエラー処理の最良の例は、William Shotts, Jr がhttp://www.linuxcommand.orgに書いたものです。
彼は、Bash でのエラー処理に次の関数を使用することを提案しています。
Bash スクリプトで使用する、より優れたエラー処理ルーチンはありますか?
java - 最終ブロックは常にJavaで実行されますか?
このコードを考えると、何が何であれ、ブロックが常に実行されることを絶対に確信できますか?finally
something()
sql - Sql Server 2005 エラー処理 - 内部例外
C# では、元のエラーを取得し、渡された内部例外を使用して実行パス (スタック トレース) をトレースできます。2 つまたは 3 つのレベルの深さでネストされたストアド プロシージャでエラーが発生したときに、SQL Server 2005 のエラー処理 try/catch を使用してこれをどのように達成できるかを知りたいです。
最上位のストアド プロシージャがアクセスできるように、ERROR_MESSAGE()、ERROR_LINE()、ERROR_PROCEDURE()、ERROR_SEVERITY() などの関数を簡単に渡すことができることを願っています。