Можно ли найти функцию и / или номер строки, вызвавшие ошибку в ActionScript 3.0, без использования режима отладки?

В настоящее время я пытаюсь реализовать автоматический репортер ошибок для приложения Flex и хочу возвращать на сервер сообщения об ошибках вместе с номером функции / строки, вызвавшей ошибку. По сути, я пытаюсь получить информацию getStackTrace () без перехода в режим отладки, потому что у большинства пользователей приложения скорее всего не будет отладочной версии flash player.

Мой текущий метод использует обработчик 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!";
            }

, но это будет работать только из-за arguments.callee, и поэтому не будет проходить через несколько уровней вызовов функций (она никогда не превысит мою ошибку слушатель событий).

Итак! У кого-нибудь есть идеи, как получать информативные сообщения об ошибках через глобальную обработчик событий ошибки?

РЕДАКТИРОВАТЬ : Похоже, возникло какое-то недоразумение. Я явно избегаю getStackTrace (), потому что он возвращает значение null, когда он не находится в режиме отладки. Я специально стараюсь избегать любого решения, использующего эту функцию.

6
задан Jacob Eggers 28 June 2011 в 21:09
поделиться