2

使用 UncaughtErrorEvent.UNCAUGHT_ERROR 时是否可以获得错误和错误事件的目标/来源?

我正在使用复杂的 Flash 应用程序记录用户的运行时错误,并且想知道哪里出了问题。

UncaughtErrorEvent 的目标是作为 LoaderInfo 进行跟踪(我假设,因为它也踢出 UncaughtErrorEvent),并且 ErrorEvent 的目标为空。

this.loaderInfo.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, uncaughtErrorHandler);

private function uncaughtErrorHandler(event:UncaughtErrorEvent):void {
  trace("event.target: " + event.target)
  if (event.error is Error){
    var error:Error = event.error as Error;
  }else if (event.error is ErrorEvent){
    var errorEvent:ErrorEvent = event.error as ErrorEvent;
    trace("errorEvent.target: " + errorEvent.target)
  }
}
4

3 回答 3

1

这对我有用 - 输出如下错误:

trace( (event.error as Error).getStackTrace() );

这里

于 2014-01-08T13:53:08.563 回答
0

看来你不能。目标是装载机。我想这是由于应用程序和安全沙箱的工作方式造成的。

http://help.adobe.com/en_US/FlashPlatform/beta/reference/actionscript/3/flash/events/UncaughtErrorEvent.html

于 2012-02-10T10:44:36.817 回答
0

正如本文所说,您可以从 ErrorEvent 对象的私有错误属性中检索堆栈跟踪。我正在复制粘贴相关的代码块:

    private function uncaughtErrorHandler(e:UncaughtErrorEvent):void
    {
        if( e.error is Error)
        {
            var stack:String = Error(e.error).getStackTrace();
            Console.error(Error(e.error).message + ((stack!=null)? "\n"+stack : ""));
        }
        else if( e.error is ErrorEvent)
            Console.error(ErrorEvent(e.error).text);
        else
            Console.error(e.error.toString());
    }
于 2012-03-05T16:05:46.303 回答