HOWTO:捕获ActiveX Script Host中的运行时错误

翻译 2006年05月19日 11:01:00

翻译自:Knowledge Base:Q232394

摘要:
      如同所有的程序,在ActiveX Script Host中运行的脚本,能抛出两种类型的错误:编译时错误、运行时错误。由Micosoft提供的ActiveX Script Engines(VBScript/JScript),  在早期的实现中对这两种错误的处理没有区别,均由IActiveScriptSite::OnScriptError()来处理。随着更多Script engines新版本的出现,运行时错误与编译时错误之间的区别也产生了。编译时错误,例如语法错误,仍然报告给ActiveX Script Host,通过IActiveScriptSite::OnScriptError()来处理。然而,运行时错误,例如传入无效的参数,不直接报告给OnScriptError(),而是报告给另一个方法IActiveScriptSiteDebug::OnScriptErrorDebug().
      这篇文章将描述如何修改ActiveX Script Host,以便捕获由脚本抛出的运行时错误。

详细内容:

      在这里,假设你已经编写了一个ActiveX Script Host。有关更多的信息请参见本文参考区列出的文章。
      在脚本引擎的最新发行版中,当一个运行时错误发生时,IActiveScriptSiteDebug::OnScriptErrorDebug将被调用。IActiveScriptSiteDebug接口提供Script Host一个机会,在debugger被调出之前参与调试工作。为了在运行时错误发生时Script Host能得到通知,需要IActiveScriptSiteDebug接口的最小实现。
      当IActiveScript::SetScriptSite方法被调用时,Script Engine将通过host的IActiveScriptSite指针查询IActiveScriptSiteDebug接口。如果失败,Script engine将尝试联系自己的脚本调试器。然而,如果查询成功,Script engine将调用IActiveScriptSiteDebug::GetApplication()为本次会话建立调试工具。如果IActiveScriptSiteDebug::GetApplication()失败,Script engine将断定在本机调试不可用,从而返回到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;}

       当然,Script Host可以选择IActiveScriptSiteDebug接口的一个较复杂的实现。有关IActiveScriptSiteDebug接口和实现的文章,请参见:
       http://msdn.microsoft.com/scripting ,并选择Hosing Information/Documentation/Windows Script Debugging。Smart Host专区描述如何实现IActiveScriptSiteDebug接口。

      参考:
      有关生成Active Script Host的更多信息,请参见下面列出的Microsoft Knowledge Base文章:
            Q223139 HOWTO: Add Support for Hosting VBScript to an ATL Application
            Q183698 SAMPLE: AXSH.exe Demonstrates Implementing ActiveX Script Hosts
            Q168214 SAMPLE: MFCAxs.exe Implements an ActiveX Script Host Using MFC 
             Q223389 FILE: Scriptng.exe Contains the Files Necessary for Implementing ActiveX Script Hosts and Engines

java所有运行时异常以及错误.

  • 2014年11月26日 18:13
  • 39KB
  • 下载

PADS9.5发生严重的运行时错误

  • 2017年07月16日 16:14
  • 572KB
  • 下载

MFC在VS2008中开发ActiveX控件,运行时自带的容器在哪?

在VS2008中开发MFC ActiveX控件,开发完后,通常使用VS自带的容器ActiveX Control Test Container来运行ActiveX控件。此容器在VS安装后的文件中是找不到...

JBPM4运行时错误异常总结

  • 2009年12月23日 09:35
  • 27KB
  • 下载

Erlang运行时错误

Erlang中的运行时错误包括:badarg, badarith, badmatch, function_clause, case_clause, if_clause, undef, noproc, ...

Microsoft VBScript 运行时错误类型总结

用户权限分配不正确导致的结果! 给c:/program files/common files/system添加system权限 IIS网站目录添加IIS USER读权限 上传所有目录添加I...

编译运行时错误信息(英汉对照)

  • 2015年06月26日 13:56
  • 62KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:HOWTO:捕获ActiveX Script Host中的运行时错误
举报原因:
原因补充:

(最多只允许输入30个字)