Scripting VBScript未退出';做While';环

Scripting VBScript未退出';做While';环,scripting,vbscript,Scripting,Vbscript,由于VBScript的内置错误处理非常糟糕,因此我尝试通过在Err.Number=0循环中包装我的主要块来解决这个问题。理论上,这应该是可行的:如果一个脚本启用了On Error Resume Next语句,那么该脚本将绕过WSH中的内置错误处理程序(即完全停止它),同时仍然填充它的Err对象。接下来应该发生的是错误号的改变,这将触发循环中的中断,并使其跳转到我的另一个代码分支。(很抱歉提供ASM参考。) 然而,这似乎并不是一直都有效。有时,它会完全按照上面所描述的那样工作,并且工作得很好。不过

由于VBScript的内置错误处理非常糟糕,因此我尝试通过在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)

谢谢

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

事实上,我甚至没有意识到要这么做!我接受了我以前写的一些问题的答案;谢谢你的提醒。