发布于2026-07-22 阅读(0)
扫一扫,手机访问
从 Flash Player 10.1 开始,Adobe 引入了一个相当实用的全局错误处理机制——UncaughtErrorEvents。简单来说,它允许你在全局范围内捕捉那些原本会“漏网”的未捕获错误,无论是在捕获阶段还是冒泡阶段,都能被拦截下来。
这个机制与 LoaderInfo 或 Loader 对象绑定。具体来说,可以通过以下两个属性来访问 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,然后再绑定事件处理器。这样既能享受新特性带来的便利,又不会在低版本环境下报错,算是一个比较稳妥的做法。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8