📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
編集の要約なし |
編集の要約なし |
||
| 12行目: | 12行目: | ||
== 処理されていない例外をハンドルするには == | == 処理されていない例外をハンドルするには == | ||
''' | * '''Application.ThreadExceptionイベントの活用''' | ||
処理されなかった例外をハンドルするには、WindowsフォームならApplicationクラス(System.Windows.Forms名前空間)の | :処理されなかった例外をハンドルするには、WindowsフォームならApplicationクラス(System.Windows.Forms名前空間)の | ||
ThreadExceptionイベントをハンドルして処理する。 | :ThreadExceptionイベントをハンドルして処理する。 | ||
このイベントは、Windowsフォームのメインスレッド(ApplicationクラスのRunメソッドにより実行されるアプリケーションのコンテキスト)内で | :このイベントは、Windowsフォームのメインスレッド(ApplicationクラスのRunメソッドにより実行されるアプリケーションのコンテキスト)内で | ||
発生した未処理の例外をハンドルするためのものである。 | :発生した未処理の例外をハンドルするためのものである。 | ||
''' | * '''Thread.GetDomain().UnhandledExceptionイベントの活用''' | ||
では、上記のメイン・スレッド以外のコンテキスト上で発生した例外は、 | :では、上記のメイン・スレッド以外のコンテキスト上で発生した例外は、 | ||
現在のアプリケーションドメイン(AppDomainクラス(System名前空間)のThread.GetDomainメソッドにより取得できる)の | :現在のアプリケーションドメイン(AppDomainクラス(System名前空間)のThread.GetDomainメソッドにより取得できる)の | ||
UnhandledExceptionイベントで出来る。 | :UnhandledExceptionイベントで出来る。 | ||
例えば、マルチスレッド処理において、メインスレッド以外のスレッドで発生した例外やコンソールで発生した例外等は、 | :例えば、マルチスレッド処理において、メインスレッド以外のスレッドで発生した例外やコンソールで発生した例外等は、 | ||
全てこのUnhandledExceptionイベントをハンドルして処理すればよい。 | :全てこのUnhandledExceptionイベントをハンドルして処理すればよい。 | ||
上記2つのイベントを活用して未処理の例外を実際に処理しているのが、次のサンプルコードである。<br><br> | 上記2つのイベントを活用して未処理の例外を実際に処理しているのが、次のサンプルコードである。<br><br> | ||