在VBScript中,是否可以引发错误以模拟转到?

在VBScript中,是否可以引发错误以模拟转到?,vbscript,Vbscript,如果我在VBA中工作,我当前的程序如下所示: Do While MyFile.AtEndOfStream <> True arrRecord = Split(MyFile.ReadLine, ",") ' Make an array of the values in this line 'There are certain records I don't want to process: If arrRecord(1) <> "USA" then goto skip I

如果我在VBA中工作,我当前的程序如下所示:

Do While MyFile.AtEndOfStream <> True
arrRecord = Split(MyFile.ReadLine, ",") ' Make an array of the values in this line

'There are certain records I don't want to process:
If arrRecord(1) <> "USA" then goto skip
If arrRecord(0) <= "12/31/2001" then goto skip

' Otherwise, run the rest of the code on this record

skip:
Loop
Do While MyFile.AtEndOfStream True
arrRecord=Split(MyFile.ReadLine,“,”)在此行中创建一个值数组
'我不想处理某些记录:
如果记录(1)“美国”,则转到跳过

如果arrRecord(0),这在VBScript中是不可能的。唯一的错误处理方法是在错误恢复下一步时执行
,若要在某个范围内禁用该操作,请在错误时执行
转到0


在VBScript中没有标签这样的想法。

VBScript与VBA不同,在错误转到时没有
。它只在错误恢复下一步时有

但是,可以使用
Exit
语句处理您正在寻找的提前退出控制流的情况。有关更多详细信息和示例,请参阅Microsoft脚本编写人员的文章

如果您当前不在希望退出的控制流中,您可以通过创建一个只执行一次的控制流来破解它:

Do
    'Stuff
    If something Then Exit Do
    'More Stuff
Loop While False 'Execute once, can be left early by "Exit Do"

虽然这显然是一种黑客行为,但我不确定这是否比一开始就直接使用“Goto”更糟糕。通常,人们可以重新构造逻辑,以清楚地了解自己实际在做什么,而不需要这些不雅观的结构。

该页面很有用,但我不确定是否适用于我的情况。我不想完全“退出做”;我只想跳到Do循环的下一个迭代。有办法吗?否则,我会被困在多个嵌套的……然后循环。但您正试图模仿Goto,这意味着您无论如何都不会追求最优雅的代码。通常会有一种方法来重组事物,以便您的控制流程更清晰。
Do
    'Stuff
    If something Then Exit Do
    'More Stuff
Loop While False 'Execute once, can be left early by "Exit Do"