- - PR -
子フォームの例外処理
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-09-30 21:34
いつもお世話になっています。
現在、開発中のアプリケーションは、Module→親フォーム→子フォームの順で起動する仕組みになっています。 Exceptionが発生した場合は、Module上のTry〜Catchで処理しようとしています。 親フォームで発生したExceptionはCatchできるのですが、子フォームで発生したExceptionはCatchできません。 Moduleで子フォームで発生したExceptionを取得するには、どのようにすればよろしいでしょうか。 ご存知の方がおられましたら、ご教示の方お願いします。 また、不足な点などありましたらご指摘お願いします。 ---開発環境--------------------- [OS]WindowsXP pro SP1 [.NET].NET Framework ver1.1 SP1 [VS]VisualStudio.NET 2003 SP(無) [開発物].NET アプリ [言語]VB.NET -------------------------------- | ||||||||
|
投稿日時: 2004-10-01 06:32
諸農です。
Application.ThreadExceptionを使って トラップするというのはどうでしょうか。 _________________ 諸農和岳 Powered by Turbo Delphi & Microsoft Visual Studio 2005 十兵衛@わんくま同盟 http://blogs.wankuma.com/jubei/ | ||||||||
|
投稿日時: 2004-10-01 09:31
回答ありがとうございます。
Module起動だとApplication.ThreadExceptionが使用できませんでした。 UnhandledExceptionで処理しようと試みたのですが、期待するような結果が得られず、Modeleの一箇所でCatchする方法に 至りました。 説明が不足ですみません。 | ||||||||
|
投稿日時: 2004-10-01 11:53
諸農です。
> Module起動だとApplication.ThreadExceptionが使用できませんでした。 申し訳ないです。 VB.NETのことがよく判らないので、どういう現象なのかがよく分からない のですが。。。 モジュール側にトラップ処理を記述したイベントデリゲートを準備しておいて、 Formクラス側で(Applicationクラスを参照できるところで、の意)デリゲートをApplication.ThreadExceptionにセットすることが不可ということなのでしょうか。。 _________________ 諸農和岳 Powered by Turbo Delphi & Microsoft Visual Studio 2005 十兵衛@わんくま同盟 http://blogs.wankuma.com/jubei/ | ||||||||
|
投稿日時: 2004-10-01 13:10
その通りだと思います。 Module起動の場合、FormクラスにApplication.ThreadExceptionがあっても、例外を処理することができませんでした。(Form起動だとできました) また、ModuleにUnhandledExceptionを記述して、それで処理をしようとしたのですが、希望通りの結果が得られませんでした。 Moduleの親フォームを起動する処理のところにTry〜Catchを記述して、それで例外処理をまとめて処理しようとしています。 その場合、親フォームから子フォームを起動して、子フォームで発生した例外処理をModuleで処理する方法で悩んでいます。 | ||||||||
|
投稿日時: 2004-10-06 16:06
コードを公開します。 デバッグ実行ではCatchできるのですが、Exeを起動するとJITメッセージが表示されます。
| ||||||||
|
投稿日時: 2004-10-06 16:45
親フォームを
Friend frm_form1 As form1 Friend frm_form2 As Form2 Sub main() AddHandler Application.ThreadException, New System.Threading.ThreadExceptionEventHandler(AddressOf UnhandledException) frm_form1 = New Form1 frm_form1.ShowDialog() End Sub Sub UnhandledException(ByVal o As Object, ByVal e As System.Threading.ThreadExceptionEventArgs) MessageBox.Show(e.Exception.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Error) End Sub としてみてはどうでしょうか。 | ||||||||
|
投稿日時: 2004-10-06 16:54
ご指摘通りに修正したところ例外処理をすることができました。 ありがとうございました。 |