Optimization vbscript中的Err.clear

Optimization vbscript中的Err.clear,optimization,vbscript,error-handling,Optimization,Vbscript,Error Handling,在这个vbscript中,第二个Err.Clear是必需的,或者不是优化的一部分 Set WshShell = CreateObject("WScript.Shell") strSpoRootKey = "HKLM\SOFTWARE\" strKey = RootKey & "tcc\Operation\" & Version & "\Location" strPath = wshShell.RegRead(strKey) If Err Th

在这个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

调用
Err.Clear
的目的是在捕获并处理错误后显式清除
Err
对象。这表明,当您对使用延迟错误处理时,这尤其有用。这意味着您确实应该在处理检测到的错误后调用
Err.Clear
,无论这对您的特定应用程序意味着什么

您没有提供足够的代码来建议您正在使用的错误处理例程。例如,如果您在发布的块上方的代码中有
On Error Resume Next
,和/或您正在使用
strErr
来实际处理错误。您的脚本是否在发布部分的末尾结束?如果是这样的话,您可能正在清除第二个
Err.clear
,因为在脚本执行过程中不可能再出现另一个错误


无论如何,我将采取简单的方法,建议您也这样做:绝对没有理由通过删除任何
错误来“优化”此代码。清除
语句。我保证该语句不会限制脚本的执行速度。除非您在错误处理例程中遇到问题(如两次捕获同一个错误或由于过早清除错误而未能捕获错误),否则没有理由担心“额外的”
Err.Clear
语句。

是第二个错误。一旦出错,Clear应该是缺点 以其他方式妥善处理,并将其转入下一阶段

因此,情况将发生变化

If Err Then           
       strErr = strErr & ": " & Version & ": " & strKey & ":error("  
       Err.Clear   // second Err.clear
End If