我想编写一个函数,其中有多个“Exit Function”语句。在执行退出功能之前,有没有办法让我确保一些清理代码一直运行?
这是我实际上要做的事情,我想在我的测试自动化项目中设置一个标准,某个函数应该在任何函数的代码开始之前运行,并在退出函数之前运行另一个函数。有没有简单的方法呢?
答案 0 :(得分:3)
由于函数中的包装函数在VBScript中并不容易(期望参数传递的问题),你应该使用一个类:
Class cWrap
Private m_sName
Public Function init(s)
Set init = Me
m_sName = s
WScript.Echo "*** enter", m_sName
End Function ' init
Private Sub Class_Terminate()
WScript.Echo "*** leave", m_sName
End Sub ' Class_Terminate
End Class ' cWrap
Function f1(n)
f1 = "f1 called"
Dim o : Set o = New cWrap.init("f1")
End Function ' f1
Function f2(n)
f2 = "f2 called"
Dim o : Set o = New cWrap.init("f2")
End Function ' f2
答案 1 :(得分:2)
Ekkehard.Horner的包装类非常有用,如果你有东西可以超出函数的范围,比如秒表,runstack查看器或错误对象上的异常捕获器。但是当你在函数范围内有事情要做并且包装类渲染无用时,你可以考虑使用Do Loop While False
模式:
Function DoSomeMessyStuff()
Do
call doStuff()
If somecondition Then Exit Do
call doMoreStuff()
If somecondition Then Exit Do
call doEvenMoreStuff()
If somecondition Then Exit Do
call andEvenMoreStuffHere()
Loop While False ' Always exits
' Finally:
call cleanUpTheMess()
End Function