• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【VB.NET】複数のサブルーチンをすべて一気に抜ける方法?)

【VB.NET】複数のサブルーチンを一気に抜ける方法

このQ&Aのポイント
  • VB.NETで複数のサブルーチンを一気に抜ける方法について教えてください。
  • 特定の条件の時に、複数のサブルーチンを抜ける方法についてお知りになりたいです。
  • 現在の方法ではコードが見にくくなってしまっています。他にスマートな方法はあるでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

「何個分の関数抜け」という命令語はありません。 Sub 名前 ~ End Sub では無く Function 名前 As ステータス ~ End Function とするようにして、処理の継続/中断を判別できるようにしましょう。 Sub AAA()   If Not BBB() Then     MsgBox("異常終了", MsgBoxStyle.Critical)     Return   End If   MsgBox("全部TRUEで正常終了", MsgBoxStyle.Information) End Sub Function BBB() As Boolean   If Not CCC() Then     MsgBox("BBBを強制抜け", MsgBoxStyle.Critical)     Return False   End If   Return True End Function Function CCC() As Boolean   If MsgBox("強制的にCCCを抜ける?", MsgBoxStyle.Question Or MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then     MsgBox("CCCを強制抜け")     Return False   End If   Return True End Function

linelan
質問者

お礼

 どうもありがとうございます!!m(_ _)m なるほどFunctionの使用でございますか。 確かにこれだと分かりやすいですね。  今全部書き換えている途中でございますが、 うまく動作してくれております。助かりました^^  この度はご親切にどうもありがとうございました!!^^

その他の回答 (1)

noname#134443
noname#134443
回答No.1

 Sub AAA   try    Call BBB   catch end try  End Sub ----------  Sub CCC    If (抜けたい時)then     throw new Exception()    End If     End Sub ---------- 例外処理の構文はこれでよかったかあやふやですが、 CCCの中で例外をスローしてAAAでキャッチする方法を紹介させていただきます。 しかしながら本来、このような処理になることはコードの複雑化を招きますので、 できることならIf文の順序など処理の順序を変えたほうが良さそうです。

linelan
質問者

お礼

 どうもありがとうございます! 試してみてうまくいきました。ただきちんと理解しておかないと >このような処理になることはコードの複雑化を招きますので、 とおっしゃられる通りコードがややこしい挙動をしてしまいそうなので 今勉強しております。。φ(-_-;  Try~Catchを使う事が今までほとんどありませんでしたので これを機に使い方を学んでおきます!  この度はご親切にどうもありがとうございました!!m(_ _)m

関連するQ&A