首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >vbscript中的Err.clear

vbscript中的Err.clear
EN

Stack Overflow用户
提问于 2010-11-09 17:02:28
回答 2查看 6.7K关注 0票数 0

在这个vbscript中,第二个Err.Clear是否作为优化的一部分是必需的。

代码语言:javascript
复制
   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吗

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-11-10 12:42:28

是的,一旦错误处理得当,第二个Err.Clear应该是下行的,否则它将进入下一阶段

因此,事情将会改变为

代码语言:javascript
复制
If Err Then           
       strErr = strErr & ": " & Version & ": " & strKey & ":error("  
       Err.Clear   // second Err.clear
End If
票数 -1
EN

Stack Overflow用户

发布于 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语句。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4131934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档