VBScript没有退出'Do-While'循环?

时间:2010-10-22 01:20:26

标签: scripting vbscript

由于VBScript的内置错误处理非常糟糕,我尝试通过将主要块包装在Do While Err.Number = 0循环中来解决这个问题。从理论上讲,这应该有效:如果脚本启用了On Error Resume Next语句,脚本将绕过WSH中的内置错误处理程序(即完全停止它),同时仍然填充其Err对象。接下来应该发生的是错误号会改变,这应该会触发循环中断并让它跳转到我的其他代码分支。 (抱歉ASM参考。)

但是,这似乎并不是一直都有效。有时,它会完全按照上面描述的方式完成并且工作得很漂亮。但是,其他时候,它只是完全忽略了变化并继续前进。即使我在调试器中检查对象,我也可以看到WSH更改错误号及其他成员,但一味地忽略了循环条件!

是什么给出了?

示例:

Dim TestObject
Do While Err.Number = 0
     Set TestObject = CreateObject("Scripting.FileSystem") 'should trigger an error
     WScript.Echo "Who cares about your DO?!"
Loop
WScript.Echo "Script should go here."
WScript.Quit(0)

谢谢!

1 个答案:

答案 0 :(得分:1)

实际上,没关系。 VBscript不像编译语言,不能分支出循环,因为它在程序上执行每个语句。将脚本切换到.NET或其他东西的另一个原因。