2007年06月22日

スレッド内で発生した例外 その2

   このエントリーをはてなブックマークに追加 Clip to Evernote
前回「スレッド内で発生した例外」の続き。
どうも気になったので調べてみた。
スレッドで例外が発生し、その例外を処理しないと、スレッドは終了せず、Runningの状態のままみたい。

となると、AppDomain.UnhandledException で例外を処理できたとしても、迷子になったスレッドが残ってしまい、スレッドを沢山起動するようなプログラムの場合は、問題が隠されてしまうだけで、本当の問題解決にはならないってことだな。

だから、スレッドで処理されない例外がある場合は、システム側で処理を強制終了させてしまうという仕様になってるんだろう。

と理解した。

MSDNライブラリを調べてみると、「マネージ スレッドの例外」には、それらしいことが書いてあった。

けど、事前にコードを書いて確かめてたから、少しは理解できたけど、日本語読解力が不足しているせいか、僕には、どうもピンとこない文章だ。

----
.NET Framework Version 2.0 では、共通言語ランタイムはスレッド内のほとんどの未処理の例外をそのまま続行させます。ほとんどの場合、これは未処理の例外によって-アプリケーションが終了することを意味します。
---
はまだ良いけど、

---
マネージ コードが例外ハンドラをインストールする機会を得る前に、ランタイムは未処理の例外をスローできます。マネージ コードにこのような例外を処理する機会がない場合でも、例外を続行させることができます。
---
になると?だ。


 

この記事へのトラックバックURL

http://trackback.blogsys.jp/livedoor/gushwell/50837823