問題タブ [exception-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.

0 投票する
4 に答える
2781 参照

c# - MS Excel および COM によってホストされる C# 2 のデリゲート内の例外の動作

みなさん、おはよう、

ここで少し言語理論の質問があります... C# の例外処理とデリゲートが場合によっては異なる動作をすることを示唆する参考文献をオンラインで見つけましたが、この問題に関する具体的なドキュメントは見つかりません。

最近、Microsoft Excel アドインのデリゲート内で例外が発生し、MSVC ランタイムでハード クラッシュが発生するという大きな問題が発生しました。デリゲートを削除することでこれは解決しましたが、私は今、悲惨な詳細を知りたいと思っています.

コアコードの簡潔な例として:

上記の構成により、集中型のエラー処理が可能になり、純粋なコードの観点からは、クリーンで簡潔になりました。公開されている各関数はデリゲートとして宣言され、上記のフラグメントを介して実行されます。

単純なコンソール アプリでは、デリゲートから例外をスローするか、単純な予期しないエラー (たとえば、null ポインターで ToString() を "誤って" 呼び出す) をスローすると、期待どおりに機能し、エラーは必要に応じて処理されます。

MS Excel を投入すると、ハード クラッシュが発生します。コードをステップ実行すると、エラーが発生した場所が示されますが、すべてが破壊の大きな火の玉になる前に、スタックの巻き戻しが行われていないように見えます。

私の仮説は、.NET ランタイム (つまり、コード) をホストしている COM が、通常の .NET コードの実行とは異なることを行っているというものです。これによりエンドポイントが強制終了され、Excel はこれを認識せず、COM を介してエンドポイントにアクセスしようとしますが、エンドポイントが何らかの形で消失したことを確認し、Excel が代わりにクラップアウトします。

これは、Excel + COM + デリゲートの組み合わせでのみ発生しますが、この動作でどちらがより影響力があるかは正直わかりません... 何か考えはありますか?

0 投票する
2 に答える
5127 参照

java - JNIコードがjthrowableのgetMessageメソッドを正常に見つけられないのはなぜですか?

クラスが見つからない場合に生成される例外を処理しながら、jthrowableでメッセージにアクセスしようとしています。しかし、jthrowableオブジェクトのgetMessage()のメッセージIDにアクセスできず、その理由がわかりません。getMessageの署名を「()Ljava / lang / String」に変更してみました(最後にセミコロンはありませんが、それは必要ですよね?)。私はこれについて地獄と混同しています。getMessageをtoStringに置き換えようとましたが、うまくいきませんでした。明らかに、私はここで些細なことをしている。

これが私が使用しているコードです:

このコードの出力は(とりわけ)次のようになります。

真剣に、どうやってここに着くの?
スレッド「main」の例外java.lang.NoClassDefFoundError:com / planet / core360 / docgen / Processor

javap -p -s java.lang.Throwable私にこれを与えます:

「Throwable.java」からコンパイルされた
publicclassjava.lang.Throwable extends java.lang.Objectimplements java.io.Serializable {
...
public java.lang.String getMessage();
署名:()Ljava / lang / String;
..。

0 投票する
9 に答える
34574 参照

c# - .NET - 「すべての例外ハンドラーをキャッチ」を実装する最良の方法は何ですか?

私は、「他のすべてが失敗した場合にそれをキャッチする」ことが最善の方法であると思っています。

つまり、アプリケーションで可能な限り多くの例外を処理していますが、それでもバグが発生する可能性があるため、未処理の例外をすべてキャッチして、情報を収集してデータベースに保存したり送信したりできるようにする必要があります。 Web サービスに。

AppDomain.CurrentDomain.UnhandledException イベントはすべてをキャプチャしますか? アプリケーションがマルチスレッドであっても?

補足: Windows Vista は、クラッシュ後に任意のアプリケーションが自身を回復できるようにするネイティブ API 関数を公開しています...名前は今は思いつきません...しかし、多くのユーザーがまだ使用しているため、使用したくありません。 WindowsXP.

0 投票する
2 に答える
771 参照

delphi - WindowsでExceptProcが呼び出されない

現在、未処理の例外が発生した場合に別のプログラムにメッセージを送信する、Windows サービスに組み込まれた例外ハンドラーを作成しようとしています。メソッドを作成し、通信が機能するようになりましたが、プログラムがエラーをスローするたびに (強制するコードにレイズ呼び出しがあります)、ウィンドウが代わりにそれをキャッチし、ハンドラーが呼び出されないようです。誰かが私が間違っていることを説明できますか?.

説明する簡略化されたコード:

このコードを呼び出して実行します。

出力は次のようになると思います。

開始
表示: 未処理

しかし、それが行うのは表示だけです:

起動

その後、Windows は約 5 秒後にコマンド プロンプトを返します。

ハンドラーが正しく呼び出されないのはなぜですか?

PS テスト用のコンソール アプリでこれらのテストを実行しています。

編集:

さらに詳しい情報は次のとおりです。

明らかに、ExceptProc が割り当てられている場合、プログラムは通常の実行時エラー 217 をスローすべきではありません。これはウィンドウがキャッチしているものだと思いますが、私が見ることができることから、私のプログラムはそのランタイムエラーをスローしており、それをキャッチするための ErrorProc も取得できません。

0 投票する
4 に答える
41373 参照

java - JNIコードで例外をスローする最良の方法は?

JNI コードで例外をスローするための一貫した簡単な方法が必要です。チェーンされた例外を処理するもの (env->ExceptionOccurred メソッドから暗黙的に、またはパラメーターによって明示的に、どちらの方法でも良い)、これを行うたびにコンストラクターを検索する手間を省くことができます。上記はすべて C であることが望ましいですが、必要に応じて C++ から翻訳することもできます。

SOの誰かが共有できるこのようなものを持っていますか?

0 投票する
5 に答える
2919 参照

c# - C# での例外キャッチの確認

Java では、考えられるすべての例外をキャッチするか、メソッド シグネチャでスローされるように宣言する必要があります。これは C# には当てはまりませんが、すべての例外をキャッチすることは良い習慣だと思います。C# プロジェクトを処理し、例外がスローされたがキャッチされていない場所を指摘できるツールを知っている人はいますか?

0 投票する
6 に答える
840 参照

c# - 例外を無視する

特定の例外を無視するコードがあります。

もちろん、 ex は使用されていないため、コンパイル時に警告が表示されます。この警告を削除するために使用する必要がある標準の accept noop はありますか?

0 投票する
4 に答える
3218 参照

sql - (Windows) 例外処理: イベント ログまたはデータベースへ?

私は、例外処理をイベント ログとデータベースのテーブルに実装した店舗で働いてきました。

それぞれにメリットがありますが、私の経験に基づいていくつかを強調できます。

イベントログ

  • 例外のための業界標準の場所 (+)
  • ロギングの容易さ (+)
  • ここにデータベース接続の問題を記録できます (+)
  • イベント ログの上にレポートおよび表示アプリを構築できます (+)
  • そこにたくさん報告されている場合は、時々フラッシュする必要があります (-)
  • SQL ロギングほど拡張性がない [SQL のメソッド名などのカスタム フィールドを追加する] (-)

SQL/データベース

  • 大量のデータを扱える (+)
  • 例外の急速なボリューム挿入を処理できます (+)
  • 負荷分散環境での例外用の単一の保管場所 (+)
  • 非常にカスタマイズ可能 (+)
  • SQL ストレージからレポート/通知を作成するのが少し簡単 (+)
  • 一般的な例外が格納される場所とは異なります (-)

重要な考慮事項がありませんか?

これらのポイントのいくつかは議論の余地があると確信していますが、他のチームにとって何が最も効果的だったのか、そしてなぜあなたがその選択について強く感じているのか興味があります.

0 投票する
2 に答える
169 参照

exception-handling - アプリケーションに特定の例外を強制的にスローさせる

Vista 認定に準拠するために、アプリの例外処理システムを置き換えていますが、問題は、応答を確認できるように、特定の例外を強制的にスローする方法です。

残念ながら、アプリ全体は、適切なレイヤリング、抽象化、または分離の原則を考慮せずに作成されており、時間枠内でモッキングと単体テストを導入することは問題外です:(

私の考えは、コンパイラ ディレクティブまたは構成ファイルの値を尊重することによって、特定の例外をスローするコードを導入することです。その後、アプリを通常どおり実行し、例外がどのように処理されるかを手動で確認できます。

私はそれを公開して、SOコミュニティがもっと良いものを考えられるかどうか見てみようと思った.

乾杯

0 投票する
6 に答える
56357 参照

asp.net - Sys.WebForms.PageRequestManagerServerErrorException 12031

AJAX.NET アプリケーションから次のポップアップが表示されることがあります。

Microsoft kbから、そのステータス コードは ERROR_INTERNET_CONNECTION_RESET を示しますが、そもそもエラーを引き起こした根本的な問題が何であったかは述べられていません。

ポップアップを生成した根本的なエラーをログ/トレース/etc するにはどうすればよいですか?