是否可以退出subA调用的内部 subB中的subA?
public subA()
call subB()
end sub
subB()
If true then
'exit subA
end if
'continue
end sub
如果无法做到这一点,最好的办法是什么? 我搜索了这个网站,但所有类似的问题都有解决方案,解决了其他人要求的具体问题。他们不适合我。
答案 0 :(得分:1)
使subB
成为函数并使用返回值告诉subA
退出:
public subA()
if not subB() then
Exit Sub ' <--- new
end if
end sub
function subB() as boolean
' returns True on success, False on failure.
If <<some condition for exiting subA>> Then
subB = False '<--- new - cause subA to exit
Exit Function
end if
'continue
subB = True '<--- new - tell subA it doesn't need to exit
End Function
编辑:最佳方式是您在特定代码的上下文中最易读和可维护的方式。使用有意义的东西 - 没有硬性规则。例如:
subB
纳入subA
;这样你就不会有嵌套退出问题。 Err.Raise
中的subB
和On Error
的来电者中的subA
。但是,这会将错误处理与正常的控制流混合在一起,这通常会降低可维护性。