在这个vbscript中,第二个Err.Clear是否作为优化的一部分是必需的。
Set WshShell = CreateObject("WScript.Shell")
strSpoRootKey = "HKLM\SOFTWARE\"
strKey = RootKey & "tcc\Operation\" & Version & "\Location"
strPath = wshShell.RegRead(strKey)
If Err Then
Err.Clear //first Err.clear
RootKey = "HKLM\SOFTWARE\Wow6432Node"
strKey = RootKey & "tcc\Operation\" & Version & "\Location"
strPath = wshShell.RegRead(strKey)
If Err Then
Err.Clear // second Err.clear
strErr = strErr & ": " & Version & ": " & strKey & ":error("
End If
End If
我们应该从代码中删除第二个Err.Clear吗
发布于 2010-11-10 12:42:28
是的,一旦错误处理得当,第二个Err.Clear应该是下行的,否则它将进入下一阶段
因此,事情将会改变为
If Err Then
strErr = strErr & ": " & Version & ": " & strKey & ":error("
Err.Clear // second Err.clear
End If
发布于 2010-11-09 17:54:31
捕获并处理错误后调用Err.Clear
以显式清除Err
对象的目的。MSDN建议,当您在On Error Resume Next
中使用延迟错误处理时,这特别有用。这表明您真的应该在处理完检测到的错误之后调用Err.Clear
,无论这对您的特定应用程序意味着什么。
您没有提供足够的代码来建议您正在使用的那种错误处理例程。例如,如果你在你发布的代码块上面有On Error Resume Next
,和/或你用strErr
做了什么来实际处理错误。您的脚本是否在发布部分的末尾结束?如果是这样的话,您可能可以删除第二个Err.Clear
,因为在脚本的执行过程中无论如何都不可能引发另一个错误。
无论如何,我将采取简单的方法,并建议您也这样做:绝对没有理由通过删除任何 Err.Clear
语句来“优化”此代码。我保证该语句不会成为脚本执行速度的瓶颈。除非在错误处理例程中遇到问题(比如捕获相同的错误两次,或者因为错误被过早清除而无法捕获错误),否则就没有理由担心“额外的”Err.Clear
语句。
https://stackoverflow.com/questions/4131934
复制相似问题