如何在一个 ActiveX 脚本主机中捕获的运行时错误

文章翻译 文章翻译
文章编号: 232394 - 查看本文应用于的产品
本文已归档。它按“原样”提供,并且不再更新。
注意Microsoft Visual c + + 2005年、 Microsoft Visual c + +.net 2003年和 Microsoft Visual c + +.net 2002年支持托管的代码模型所提供的 Microsoft.net 框架和非托管本机 Windows 代码模型。本文中的信息仅适用于非托管的 Visual c + + 代码。
展开全部 | 关闭全部

概要

像所有的程序脚本在一个 ActiveX 脚本中运行宿主可引发两种类型的错误、 编译和运行时。在较早实现 ActiveX 脚本引擎提供的 Microsoft (VBScript 和 JScript) 进行不区分这两种类型的错误。两者都已在 $ IActiveScriptSite::OnScriptError() 中的处理。使用的脚本引擎的较新版本,之间运行时和编译时错误进行了这种区分。仍要使用 IActiveScriptSite::OnScriptError() 方法在 ActiveX 脚本宿主报告如语法错误的编译时错误。但是,如传递无效的参数的运行时错误都不直接报告给 OnScriptError() 中。而是,他们对不同方法 IActiveScriptSiteDebug::OnScriptErrorDebug() 报告。

本文介绍如何修改一个现有的 ActiveX 脚本宿主来捕获引发从脚本的运行时错误。

更多信息

本文假定您已书写一个 ActiveX 脚本宿主。有关执行此操作的详细信息,请参阅文章在本文的"参考"一节中记下。

在最新版本的脚本引擎中,IActiveScriptSiteDebug::OnScriptErrorDebug 称为时将发生运行时错误。IActiveScriptSiteDebug 界面提供了机会参与调试 之前 调试程序所涉及的脚本宿主。为了使脚本主机运行时错误时通知出现,IActiveScriptSiteDebug 的最小实现在要求。

在调用 IActiveScript::SetScriptSite 方法时,脚本引擎将 QueryInterface IActiveScriptSiteDebug 接口的主机的 IActiveScriptSite 指针。如果此操作的失败脚本引擎将尝试联系它自己的脚本调试程序。但是,是否成功将 QueryInterface 脚本引擎将再调用 IActiveScriptSiteDebug::GetApplication() 为脚本编写会话建立调试功能。 如果将失败 IActiveScriptSiteDebug::GetApplication() 脚本引擎将结束调试不是在上可用并恢复 IActiveScriptSite::OnScriptError() 所有错误处理。

这是 IActiveScriptSiteDebug 接口最小实现:
   STDMETHOD(GetDocumentContextFromPosition)(
      DWORD dwSourceContext, 
      ULONG uCharacterOffset, 
      ULONG uNumChars, 
      IDebugDocumentContext **ppsc) {return E_NOTIMPL;}

   STDMETHOD GetApplication( IDebugApplication **ppda ) {return E_NOTIMPL;}

   STDMETHOD(GetRootApplicationNode)( IDebugApplicationNode **ppdanRoot) {return E_NOTIMPL;}
   
   STDMETHOD(OnScriptErrorDebug)( 
      IActiveScriptErrorDebug *pErrorDebug, 
      BOOL *pfEnterDebugger,
      BOOL *pfCallOnScriptErrorWhenContinuing) {return E_NOTIMPL;}
				
Visual c + + 2005年中的 注释,您必须添加公共语言运行库支持编译器选项 (/ clr:oldSyntax) 成功编译上面的代码示例。 若要向公共语言运行库支持编译器选项,请按照下列步骤操作:
  1. 单击 项目,,然后再单击 ProjectName 属性

    注意ProjectName 是项目的名称的占位符。
  2. 展开 配置属性,然后单击 常规
  3. 在右窗格中单击以选中 公共语言运行库支持、 $ 旧语法 (/ clr:oldSyntax)支持公共语言运行库 中项目设置。
  4. 单击 应用,然后单击 确定
有关公共语言运行库支持编译器选项的详细信息,请访问下面的 Microsoft 开发人员网络 (MSDN) 的网站:
http://msdn2.microsoft.com/en-us/library/k8d11d4s.aspx
交替,脚本宿主可能选择一种更完整 IActiveScriptSiteDebug 接口实现。有关 IActiveScriptSiteDebug 接口文档,请访问以下 MSDN 网站:
http://msdn.microsoft.com/en-us/library/6c5sfkte(VS.85).aspx

参考

为有关构建 ActiveX 脚本的详细信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
223139如何添加对 ATL 的应用程序承载 VBScript 的支持
183698Axsh.exe 演示如何实现一个活动脚本主机
168214MFCAxs.exe 实现使用 MFC 的活动脚本主机
223389Scripting.exe 文件包含这些头文件和所需创建 ActiveX 脚本主机和 $ 引擎的库

属性

文章编号: 232394 - 最后修改: 2014年2月23日 - 修订: 5.3
这篇文章中的信息适用于:
  • Microsoft Visual C++ 2005 Express Edition
  • Microsoft Visual C++ .NET 2003 Standard Edition
  • Microsoft Visual C++ .NET 2002 标准版
  • Microsoft Visual C++ 6.0 专业版
  • Microsoft Visual C++ 6.0 企业版
  • Microsoft Visual C++, 32-bit Learning Edition 6.0
  • Microsoft Visual C++ 5.0 专业版
  • Microsoft Visual C++ 5.0 企业版
  • Visual Basic,Scripting Edition 5.0
  • Visual Basic,Scripting Edition 4.0
  • Visual Basic,Scripting Edition 3.0
关键字:?
kbnosurvey kbarchive kbmt kbactivexscript kbhowto KB232394 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 232394
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com