掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
インターフェース実装クラス利用時にエラーキャッチするには? (ID:102997)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
VB6(SP6),WinXP はじめまして。 下に記しましたテストコードでTestA,TestBの動きを比較したところ、 ・TestAはイミディエイトウィンドウに出力 ・TestBは実行時エラーメッセージボックス出現 という結果になってしまいました。 TestBのケースで、何とかフォーム側でエラーをキャッチしたいのですが、 どのようにするのかを教えていただけないでしょうか。 現状では、 Functionの戻り値でErr.Number、クラスのメンバでErr.Descriptionを渡す といった方法くらいしか思いつきません。 ちなみに 同様のテストコードをExcel2007のVBAで試すと どちらもイミディエイトウィンドウに出力されました。 以上、どうぞよろしくお願いします。 以下はテストコードです。 ------------------------------------------------------------------ 'フォーム:Form1.frm Option Explicit Private Sub Command1_Click() Dim cTestA As TestA Dim cTestB As ITest Set cTestA = New TestA Set cTestB = New TestB On Error GoTo Finally 'ここのコメントを切り替えて動きを比較 Call cTestA.TestExecute 'Call cTestB.TestExecute Finally: Set cTestA = Nothing Set cTestB = Nothing If Not Err.Number = 0 Then Debug.Print Err.Number, Err.Source, Err.Description End If End Sub ------------------------------------------------------------------ '標準モジュール:Common.bas Option Explicit Public Sub ThrowException() If Not Err.Number = 0 Then Call Err.Raise(Err.Number, Err.Source, Err.Description, Err.HelpFile, Err.HelpContext) End If End Sub ------------------------------------------------------------------ 'インターフェースクラス:ITest.cls Option Explicit Public Function TestExecute() As Boolean End Function ------------------------------------------------------------------ 'クラス:TestA.cls Option Explicit Friend Function TestExecute() As Boolean On Error GoTo Finally Call Err.Raise(5000, "TestA", "TestAのエラー") Finally: Call ThrowException End Function ------------------------------------------------------------------ 'クラス:TestB.cls Option Explicit Implements ITest Private Function ITest_TestExecute() As Boolean On Error GoTo Finally Call Err.Raise(5000, "TestB", "TestBのエラー") Finally: Call ThrowException End Function ------------------------------------------------------------------
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.