- ベストアンサー
【VB.NET】複数のサブルーチンを一気に抜ける方法
- VB.NETで複数のサブルーチンを一気に抜ける方法について教えてください。
- 特定の条件の時に、複数のサブルーチンを抜ける方法についてお知りになりたいです。
- 現在の方法ではコードが見にくくなってしまっています。他にスマートな方法はあるでしょうか?
- みんなの回答 (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
その他の回答 (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文の順序など処理の順序を変えたほうが良さそうです。
お礼
どうもありがとうございます! 試してみてうまくいきました。ただきちんと理解しておかないと >このような処理になることはコードの複雑化を招きますので、 とおっしゃられる通りコードがややこしい挙動をしてしまいそうなので 今勉強しております。。φ(-_-; Try~Catchを使う事が今までほとんどありませんでしたので これを機に使い方を学んでおきます! この度はご親切にどうもありがとうございました!!m(_ _)m
お礼
どうもありがとうございます!!m(_ _)m なるほどFunctionの使用でございますか。 確かにこれだと分かりやすいですね。 今全部書き換えている途中でございますが、 うまく動作してくれております。助かりました^^ この度はご親切にどうもありがとうございました!!^^