• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C#の捕捉されない例外処理の対処をご教授願います)

C#で捕捉されない例外処理の対処法とは?

P_DIZZYの回答

  • ベストアンサー
  • P_DIZZY
  • ベストアンサー率50% (5/10)
回答No.5

Thread.GetDomainメソッドはスレッドが実行されているアプリケーションドメインを返すメソッドですので同じ処理になります。 コンストラクタでハンドルされない例外が発生すると, 実際には ThreadException イベントは発生しませんのでメインスレッド側ではここが抜け道になってしまいます。 ThreadException イベントはメインスレッドでメッセージループが実行されたら発生するようになる のでメッセージループ前に発生しそうなものはtry-catchを入れればほとんど防げると思います。 自分でソケットを作成して通信処理している場合はパケット処理をするために作成した部分などで 思いもよらぬミスや見落としなどから例外が発生することが比較的多いので注意してソースを 見直すと間違えを見つけて例外が発生しなくなることもあります。 ハンドルされていない例外の処理 http://www.hrk-exp.net/2011/04/20110414.html ずばり!という回答ができずすみません(T_T) スレッド処理は過去同じく例外特定が困難で修正に苦労した記憶があります。。。 開発環境上でデバッグ実行などで処理させると特定できるものもありますので ミスがないか、MicrosoftがMSDN等で認めている.Net Frameworkのバグがないかを確認 をしてみてください。 再現性が悪いものは原因特定がよけい大変ですが、再現性が低い=思わぬところにミスがあり 特定条件で発生するバグの可能性が大きいので見落としがあるかもしれません。 過去Microsoft側のバグでどうやっても防げない例外が発生するものがありましたが。。。 例外補足についていろいろ調べられた方のURLも記載しておきましたのでそちらも ご参考になれば幸いです。

関連するQ&A

  • 例外時のエラーについて

    お世話になっております。 小さい会社のプログラマ(初心者)です。 意見を聞ける人もいなく、手探りで開発している状況なので、意見をお聞かせ願いたいと思っております。 .NetFrameworkのエラーメッセージ 「アプリケーションのコンポーネントでハンドルされていない例外が発生しました。[継続]をクリックするとアプリケーションはこのエラーを無視し、続行しようとします。[終了]をクリックすると、アプリケーションは直ちに終了します。・・・」 は、.NetFrameworkが親切心で出しているメッセージであってシステム会社の作ったシステムで出して良いメッセージじゃないと思っているのですが、どうでしょう? .NetFrameworkのエラーメッセージでは続行もでき、不完全なまま続行されると非常にまずいと思います。 せっかくTry~catchがあって例外クラスも作成できるのであれば、例外クラスでメッセージを表示してログを出すなりシステムを落とすなりするほうが絶対に良いと思っています。(本にもそう書かれていますし) それとも、これも色々手段がある中の一つの手なんでしょうか? 皆様にとっては超常識な質問だとは思いますがご回答お願いします。

  • Windows 7についてわからないので質問です

    「Windows 7 Start Button Chager v2.6」を使おうと思ったんですが、 exeを実行したら 「アプリケーションのコンポーネントで、ハンドルされていない例外が発生しました。[続行]をクリックすると、アプリケーションはこのエラーを 無視し、続行しようとします。[終了]をクリックすると、アプリケーションは直ちに終了します。 パス 'C:\Windows\explorer_backup_w7sbc.exe'へのアクセスが拒否されました。」 と表示されます。仕方ないので無視して続行を押して進んだのですが、スタートボタンの画像を選ぶ所まではいけたのですが スタートボタンを選んで開こうとするとまた同じメッセージが出てそこから進めません… どうすれば出来るようになるのでしょう?困ってます、アドバイスお願いします。ちなみに私の7は Ultimate 64bitです。

  • MicrosoftNETFrameworkエラー

    オークションサポートというソフトをインストールしたのですが、利用しようとすると Microsoft NET Framework のエラーが出ます。  アプリケーションのコンポーネントで、ハンドルされていない例外が発生しまし  た。「続行」をクリックすると、アプリケーションはこのエラーを無視し、続行し  ようろします。「終了」をクリックすると、アプリケーションは直ちに終了します。  パス’C¥ProgramFile(x86)¥AuctionSupport¥auction_support.ini’へ  のアクセスが拒否されました。 と表示されます。 詳細の最後には、  JITデバッグが有効なときは、このダイアログボックスで処理するようも、  ハンドルされていない例外はすべてコンピューターに登録された  JITデバッガに設定されなければなりません。 とメッセージされます。 何が原因なのか、どなたか教えて頂けないでしょうか? どうぞよろしくお願い致します。

  • POSについて

    POS(Point Of Sales)について質問です。 本日ショートカットを起動し、ID・passを入力した所 「アプリケーションのコンポーネントで、ハンドルされていない例外が発生しました。「続行」をクリックすると、アプリケーションはこのエラーを無視し、続行しようとします。「終了」をクリックすると、アプリケーションは直ちに終了します。」 データベースの形式'Cドライブのとあるmdbファイル'を認識できません。 と出ました。 続行してもこのエラーは表示され、終了を押すとアプリケーションが終了します。 どなたか改善策を教えて下さい。

  • このメッセージの意味と対処法教えてください

    アプリケーションのコンポーネントでハンドルされていない例外が発生しました。続行をクリックすると...終了します。 要求は中止されました。SSL/TLSのセキュリティで保護されているチャネルを作成できませんでした。 というメッセージが出ます。 対処法を教えてください。 ※OKWAVEより補足:「富士通FMV」についての質問です。

  • VB2008の64bitでの使用について

    こんにちは どなたか教えていただけると非常に助かります。 VB2008で簡単なMSアクセス2010と連携した在庫管理システムを作成しました。(Win7の32bitPCで開発しました) 32bitPCでは問題なく動作しましたが64bitPCでは以下のエラーメッセージが表示され使用できませんでした。 --------------------------------------------------------------------- Microsort .NET Framework アプリケーションのコンポーネントで、ハンドルされていない例外が発生しました、[続行]をクリックすると、アプリケーションはこのエラーを無視しようとします。[終了]をクリックすると、アプリケーションは直ちに終了します。 プロバイダーが見つかりません。正しくインストールされていない可能性があります。 --------------------------------------------------------------------- [続行]を押すて進むと、今度は以下のエラーメッセージが表示されます。 --------------------------------------------------------------------- 在庫管理システム アプリケーションのコンポーネントで、ハンドルされていない例外が発生しました、[続行]をクリックすると、アプリケーションはこのエラーを無視しようとします。[終了]をクリックすると、アプリケーションは直ちに終了します。 この操作を実行するために接続できません。このコンテキストで閉じているかあるいは無効です。 --------------------------------------------------------------------- インストーラの作成方法に誤りがあるのでしょうか。 どなたかわかる方、ご教授お願いします。

  • 毎回、画面に表示される

    アプリケーションのコンポーネントで、ハンドルされていない例外が発生しました。(続行)をクリックすると、アプリケーションはこのエラーを無視し、続行しようとします。(終了)をクリックすると、アプリケーションは直ちに終了します。 Windows ランタイム型Windows.Foundation.TypedEventHandler2が見つかりませんでした。 と毎回表示される。 ※OKWAVEより補足:「富士通FMV」についての質問です。

  • C# マルチスレッドにおける例外処理

    下記のようなデリゲートを利用したマルチスレッドのプログラムを組みました。 しかし、マルチスレッド内で例外がおきても、正常にプログラムが終了してしまいます。 (try-catchでも例外を捕捉できません) マルチスレッドプログラムにおいて、例外を捕捉するにはどうすれば、いいのでしょうか? using System; using System.Threading; class Class1 { delegate void delg(); public static void Main() { delg d = new delg(multi); d.BeginInvoke(new AsyncCallback(call), null); //マルチスレッド開始 System.Threading.Thread.Sleep(500); //マルチスレッドで例外を強制的に投げているので、 //ここまでたどり着く前にアプリケーションが落ちるはず。 //しかし、実際には正常終了。 Console.WriteLine("メインメソッド 正常終了"); } public static void multi() { Console.WriteLine("マルチスレッドで実行中"); throw new Exception(); //例外を強制的に投げる。 } public static void call(IAsyncResult ar) { Console.WriteLine("コールバックメソッド実行"); } }

  • 例外で06が0000:0000800で発生しました。

    win98です。作業中に「例外で06が0000:0000800で発生しました。現在のアプリケーションを終了します」という青い画面が度々出てきます。 「どれかキーを押すと現在のアプリケーションは強制終了されます」とありますが終了はされません。「Ctrl+Alt+Delキーをもう一度押すとコンピューターが再起動します」とありますが再起動はされません。「どれかキーを押すと続行します」とありますが続行しません。 なにをやっても動かないので、電源から強制終了することになります。どうしたものでしょうか。

  • 掲示板等にいくと例外のエラーが発生!

    インターネット接続中に掲示板やチャットのリンクをクリックすると、、、 例外OEがVXDMC SCAN32(01)+000279BFの0028:C14FE41Fで発生しました。 現在のアプリケーションを終了します。 *どれかキーを押すと、現在のアプリケーションは強制終了されます。 *Ctrl+Alt+Delキーをもう一度押すと、コンピューターが再起動します。  アプリケーションで保存していないデータはすべて失われます。  どれかのキーを押すと、続行します。 となりそのまま、キーを押すと今度は 例外OEが0246:014F480Dで発生しました。 現在のアプリケーションを終了します。 となり、もう一度キーを押すと同じようなエラーが出ます。 最終的には使えるようになるのですが、掲示板やチャットなどのリンクをクリックするとこのような現象になります。 ほかのリンクは大丈夫なのです。 リソースは80パーセントはあります。 まずは何をしたら良いのか教えて下さい。