商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > flash 报错捕获(Catch All Exception in Flash)

flash 报错捕获(Catch All Exception in Flash)

  发布于2026-07-22 阅读(0)

扫一扫,手机访问

从 Flash Player 10.1 开始,Adobe 引入了一个相当实用的全局错误处理机制——UncaughtErrorEvents。简单来说,它允许你在全局范围内捕捉那些原本会“漏网”的未捕获错误,无论是在捕获阶段还是冒泡阶段,都能被拦截下来。

这个机制与 LoaderInfoLoader 对象绑定。具体来说,可以通过以下两个属性来访问 uncaughtErrorEvents 实例:

  • LoaderInfo.uncaughtErrorEvents:用于检测同一 SWF 文件中代码产生的未捕获错误。
  • Loader.uncaughtErrorEvents:用于检测由 Loader 对象加载的另一个 SWF 文件中代码产生的未捕获错误。

有一点需要注意:如果内容在运行时的调试器版本中运行,当发生未捕获错误时,系统会弹出一个错误对话框。即使你为 uncaughtError 事件注册了侦听器,这个对话框仍然会出现。要阻止它,可以在事件处理函数中调用 UncaughtErrorEvent 对象的 preventDefault() 方法。

不过这个机制有一个明显的短板:你无法从事件对象中追踪到错误的具体来源。也就是说,你没办法针对特定的错误消息做定制化的处理——它只告诉你“出错了”,但不告诉你是哪条代码引发的。

如果你的项目需要兼容 Flash Player 10.1 以下的版本,那么最好在使用前做一下能力检测。下面是一个常见的兼容写法:

if(loaderInfo.hasOwnProperty("uncaughtErrorEvents")) 
{
    IEventDispatcher(loaderInfo["uncaughtErrorEvents"]).addEventListener("uncaughtError", uncaughtErrorHandler);
}

这段代码通过 hasOwnProperty 判断当前运行环境是否支持 uncaughtErrorEvents,然后再绑定事件处理器。这样既能享受新特性带来的便利,又不会在低版本环境下报错,算是一个比较稳妥的做法。

本文转载于:https://www.jb51.net/article/34825.htm 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注