- PR -

Tickイベントと例外ダイアログ

1
投稿者投稿内容
N.Chizuru
会議室デビュー日: 2003/07/20
投稿数: 1
投稿日時: 2003-07-20 14:25
はじめまして。
try - catch 文の外で例外を発生させた場合の挙動について、質問します。

新しく Windows Forms のプロジェクトを作成して Timer コントロールを追加し、その Tick イベントで例外を発生させてみます。するとダイアログが表示されるのですが、左下に詳細ボタンがあり、それを押すとダイアログが下に広がってスタックトレースが表示されるタイプです。

これが、たとえば Button コントロールの Click イベントで例外を発生させた場合だと、ハンドルされていない例外が発生しました...というダイアログがでて、throw した行にカーソルが移動してくれます。

スレッドの問題?かとも思ったのですが、例外をスローするだけの throwException() というメソッドをつくり、新しいスレッドとして実行しても、後者と同じ挙動です。
new Thread(new ThreadStart(this.throwException)).Start();

Tick イベントでこのような挙動を示すのは、なぜでしょうか?
catch してしまえば問題ないのですが、ちょっと気になったので………
開発環境は VS.NET Enterprise Developer 2003 と C# です。

なな
ぬし
会議室デビュー日: 2003/06/22
投稿数: 659
お住まい・勤務地: 愛知県
投稿日時: 2003-07-21 10:16
VS.NET 2002環境ですが、同様の現象ですので分かる部分だけ連絡します。

どうやら、Windowsフォームについてのみ、例外発生時にダイアログ表示する機能があるようです。
(この名前があやしい。→System.Windows.Forms.Timer.DebuggableCallback)

ダイアログの最下行およびマニュアルの「WindowsフォームのJust-In-Timeデバッグの有効化」
に、JITデバッグにする方法が書かれています。
(マニュアルは、「jitDebugging」で検索してみてください。)

しかしながら...machine.configに追記しても、JITデバッグにならない...!?
1

スキルアップ/キャリアアップ(JOB@IT)