92

ユーザーが次のようなエラーを報告するたびに

System.Runtime.InteropServices.SEHException - 外部コンポーネントが例外をスローしましたか?

原因を特定するためにプログラマーとしてできることはありますか?

シナリオ : 1 人のユーザー (私の会社が作成したプログラムを使用) がこのエラーを報告しました。これは、1 回限りのエラーである場合とそうでない場合があります。彼らは、先月、コンピューターが 2 回「動作を停止」したと述べました。私は経験から、この説明をあまり文字通りに受け取らないように学びました。これは通常、コンピュータに関係する誰かが期待どおりに機能していないことを意味するためです。彼らは詳細を教えてくれませんでしたし、ログに記録されたエラーも見つかりませんでした。したがって、このエラーである場合とそうでない場合があります。

スタック トレースから、実際のエラーは、相互運用コードを直接呼び出さないクラスを構築するときに発生しましたが、オブジェクトが DevExpress グリッドにデータバインドされたリストの一部である可能性があるという事実によって複雑になった可能性があります。

エラーは、通常はプログラムを終了する未処理の例外ルーチンによって「キャッチ」されましたが、無視して続行するオプションがあります。エラーを無視することを選択した場合、プログラムは引き続き動作しますが、このルーチンが次に実行されたときにエラーが再発しました。ただし、アプリケーションを閉じて再起動した後、再び発生することはありませんでした。

問題のコンピューターにストレスがかかっているようには見えませんでした。それは Vista Business を実行しており、2GB のメモリを搭載しており、タスク マネージャーによると、約 200Mb のアプリケーションでその約半分しか使用していませんでした。

関連する場合と関連しない場合がある情報がもう 1 つあります。同じプログラムの別のセクションでは、実質的にネイティブ dll のドットネット ラッパーであるサード パーティ製コンポーネントを使用しています。このコンポーネントには既知の問題があり、まれに、

保護されたメモリを読み書きしようとしました。これは多くの場合、他のメモリが破損していることを示しています

コンポーネントメーカーは、これは社内で使用しているコンポーネントの最新バージョンで修正されていると言っていますが、これはまだ顧客に提供されていません.

エラーの影響が少なく (作業が失われることはなく、プログラムを再起動して元の場所に戻るのにせいぜい 1 分しかかからない)、顧客がまもなく新しいバージョンを取得することを考えると (更新された 3 番目のバージョンを使用)パーティーコンポーネント)、私は明らかに指を交差させ、エラーが再び発生しないことを願っています.

しかし、これ以上私にできることはありますか?

4

8 に答える 8

28

はい。このエラーは、.NET エラーにマップされていない構造化された例外です。おそらく、キャッチされなかったネイティブ例外をスローする DataGrid マッピングです。

ExternalException.ErrorCodeプロパティを見ると、どの例外が発生しているかがわかります。あなたのスタック トレースをチェックして、それが DevExpress グリッドに関連付けられている場合は、問題を報告してください。

于 2009-08-21T19:49:35.313 に答える
5

この投稿で説明されているような問題が発生している場合:

asp.net mvc デバッガーが SEHException をスローする

解決策は次のとおりです。

Trusteer のアプリケーション (rapport など) がある場合は、システムをアンインストールして再起動するだけで問題なく動作します ... ここでこのソリューションを見つけました:

http://forums.asp.net/t/1704958.aspx/8/10?Re+SEHException+thrown+when+I+run+the+application

于 2011-08-02T10:50:49.000 に答える
3

コンポーネントメーカーは、これは社内で使用しているコンポーネントの最新バージョンで修正されていると言っていますが、これはまだ顧客に提供されています.

コンポーネント メーカーに、最新バージョンを顧客に展開する前に、または最新バージョンを展開する前に、顧客が直面している問題が最新バージョンで修正されたという問題であるかどうかをテストする方法を尋ねます。

于 2009-08-21T19:49:58.353 に答える
1

アプリがネットワーク共有に存在し、アプリの使用中にデバイス (ラップトップ、タブレットなど) がネットワークから切断されると、このエラーが発生しました。私の場合は、Surface タブレットがワイヤレス範囲外に出たことが原因でした。より良い WAP をインストールした後は問題ありません。

于 2017-03-03T21:17:27.073 に答える
0

私のマシン構成:

オペレーティング システム: Windows 10 バージョン 1703 (x64)

Visual Studio 2017 Community エディションで C# .Net プロジェクトをデバッグしているときに、このエラーに直面しました。実行時にロードされた C++ アセンブリで p/invoke を実行して、ネイティブ メソッドを呼び出していました。OPによって報告されたのとまったく同じエラーが発生しました。

マシンの管理者ではないユーザー アカウントで Visual Studio が起動されていることに気付きました。次に、マシンの管理者である別のユーザー アカウントで Visual Studio を再起動しました。それで全部です。私の問題は解決され、再び問題に直面することはありませんでした。

注意すべきことの 1 つは、C++ アセンブリで呼び出されていたメソッドが、レジストリにいくつかのことを書き込むことになっていたことです。RCA を実行するために C++ コードをデバッグしませんでしたが、Windows 10 オペレーティング システムでレジストリを書き込むには管理者権限が必要であるため、すべてが失敗する可能性があります。そのため、Visual Studio がマシンの管理者権限を持たないユーザー アカウントで実行されていたとき、ネイティブ呼び出しは失敗していました。

于 2018-02-21T12:42:29.020 に答える