加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何捕获Flex中的所有异常?

发布时间:2020-12-15 02:03:48 所属栏目:百科 来源:网络整理
导读:当我在调试闪存播放器中运行一个Flex应用程序,我得到一个异常弹出一旦意外发生的事情。然而,当客户使用应用程序时,他不使用调试闪存播放器。在这种情况下,他没有得到一个异常弹出,但他的UI不工作。 所以出于可支持性原因,我想捕获任何可能发生在Flex U
当我在调试闪存播放器中运行一个Flex应用程序,我得到一个异常弹出一旦意外发生的事情。然而,当客户使用应用程序时,他不使用调试闪存播放器。在这种情况下,他没有得到一个异常弹出,但他的UI不工作。

所以出于可支持性原因,我想捕获任何可能发生在Flex UI中的任何异常,并在Flex内部弹出窗口中显示错误消息。通过使用Java我只是将整个UI代码封装在一个try / catch块,但在Flex中的MXML应用我不知道,在哪里我可以执行这样一个一般的try / catch。

解决方法

有没有办法通知在Flex 3中的未捕获异常。Adobe知道这个问题,但我不知道他们是否计划创建一个解决方法。

唯一的解决方案是将try / catch放在逻辑位置,并确保您正在侦听任何调度它们的错误(或Web服务的FAULT)事件。

编辑:此外,实际上不可能捕获从事件处理程序抛出的错误。我已经在Adobe Bug系统上记录了一个bug。

更新2010-01-12:现在在Flash 10.1和AIR 2.0(测试版)中支持全局错误处理,并且通过订阅LoaderInfo.uncaughtErrorEvents的UNCAUGHT_ERROR事件实现以下代码取自code sample on livedocs:

public class UncaughtErrorEventExample extends Sprite
{
    public function UncaughtErrorEventExample()
    {
        loaderInfo.uncaughtErrorEvents.addEventListener(
            UncaughtErrorEvent.UNCAUGHT_ERROR,uncaughtErrorHandler);
    }

    private function uncaughtErrorHandler(event:UncaughtErrorEvent):void
    {
        if (event.error is Error)
        {
            var error:Error = event.error as Error;
            // do something with the error
        }
        else if (event.error is ErrorEvent)
        {
            var errorEvent:ErrorEvent = event.error as ErrorEvent;
            // do something with the error
        }
        else
        {
            // a non-Error,non-ErrorEvent type was thrown and uncaught
        }
    }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读