プロが教える店舗&オフィスのセキュリティ対策術

VB2005で開発しています。
あるイベントからメソッドを呼び、そのメソッドも次のメソッドを呼ぶような
処理があるとします。
この場合に、最上位のイベント以外から、
このイベントの処理をすべて終了する方法はございませんか?

最上位のイベントであれば、
Exit Subと書けば、そのイベント内の処理はすべて終了されると思いますが、
それを、下位のメソッドで行いたいのです。

このようなことはできないのでしょうか?
もし方法がございましたら、教えて頂きたいです。
ぜひ、よろしくお願いいたします。

A 回答 (2件)

Exception を Throw してください。


System.Exception を継承した自前クラスを作り、最上位イベントでは、Try ~ Catch で それ「だけ」をキャッチするようにします。

Sub イベントプロシージャ
Try
SubA
Catch mex As MyException
MsgBox("下位メソッドで処理が中止されました。")
End Try
End Sub

Sub SubA()
SubB
End Sub

Sub SubB()
If 条件 Then
Throw New MyException("処理中止")
End If
End Sub

---

Public Class MyException Inherits System.Exception



End Class
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
例外で実現すれば良いのですね。
このように使用することを考えておりませんでした。
大変参考になりました。

お礼日時:2008/09/13 11:34

私の知る限りでは、簡単には実現できない気がします。


ですが、多少面倒には なりますが、動作自体は実現可能かと
思います。

例えば、下位メソッドで、処理を中断することを示す戻り値を
返すようにし、1つ上位のメソッドでは、その戻り値によって
更に上のメソッドに処理中断を示す戻り値を返す…
最上位のメソッドでは、その戻り値によってはExit Sub
(またはExit Function)するという手も考えられます。

または、戻り値を他の用途で使用していて、戻り値による
中断が出来ない場合は、モジュールレベルとかアプリケーション
レベルの、スコープが広い変数を準備して、その変数で
処理を抜けるかどうかを判断する事も可能かと思います。
その場合も、下位のメソッドを抜けた直後に、上位メソッドで
更に抜けるかどうかを判定する必要がありますが。

なんか他にもあるかも しれませんが…
他の方のフォローに期待することとしましょう。
    • good
    • 0
この回答へのお礼

ありがとうございます。
このような手法が一般的ですよね。

お礼日時:2008/09/13 11:32

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!