是否可以在不使用调试模式的情况下找到导致ActionScript 3.0错误的函数和/或行号?

Edw*_*d H 6 apache-flex error-handling actionscript-3

我目前正在尝试为Flex应用程序实现自动错误报告器,并希望将错误消息与导致错误的函数/行号一起返回到服务器.本质上,我试图获取getStackTrace()信息而不进入调试模式,因为该应用程序的大多数用户不太可能拥有Flash播放器的调试版本.

我当前的方法是使用UncaughtErrorEvent处理程序来捕获应用程序中发生的错误,但错误消息只返回已发生的错误类型,而不是位置(这意味着它没用).我尝试使用函数名称抓取器自己实现getStackTrace()

            private function getFunctionName (callee:Function, parent:Object):String {
                for each ( var m:XML in describeType(parent)..method) {
                    if ( this[m.@name] == callee) return m.@name;
                }
                return "private function!";
            }
Run Code Online (Sandbox Code Playgroud)

但这只会因为arguments.callee而起作用,所以不会经历多级函数调用(它永远不会超过我的错误事件监听器).

所以!任何人对如何通过全局错误事件处理程序获取信息性错误消息有任何想法?

编辑:似乎有一些误解.我明确地避免使用getStackTrace(),因为它在不处于调试模式时返回'null'.任何使用此功能的解决方案都是我特别想避免的.

The*_*Man 2

您不必抛出错误来获取堆栈跟踪。

var myError:Error = new Error();
var theStack:String = myError.getStackTrace();
Run Code Online (Sandbox Code Playgroud)

关于 Error 类的很好的参考


[编辑]
阅读我自己的参考资料后,不行 getStackTrace() 仅在 Flash 播放器的调试版本中可用。
所以看起来你被困在你现在正在做的事情上。