AS3 -TypeError # 1009 - любой простой способ выяснить, * какая * ссылка на объект является нулевой? - PullRequest
3 голосов
/ 05 октября 2009

Мы все получаем «TypeError # 1009 Не удается получить доступ к свойству или методу нулевой ссылки на объект» время от времени - ничего страшного, но иногда разочаровывает отладка.

Flash дает вам стек вызовов (который является началом), но предоставляет вам возможность выяснить, где находится нулевой объект - возможно ли выяснить , какая именно ссылка вызывает ошибку ?

Учитывая следующую (подверженную ошибкам) ​​функцию:

function nullObjectReferenceError():void
    {
        var obj:Object;
        var prop:* = obj.nonExistentProperty;
    }

Вместо того, чтобы просто стек вызовов из TypeError, я хотел бы отследить что-то вроде: " Не удается получить доступ к свойству или методу нулевой ссылки на объект в obj.nonExistentProperty "- Это вообще возможно?

Ответы [ 3 ]

4 голосов
/ 05 октября 2009

Если вы установите флажок «Разрешить отладку» в разделе «Параметры публикации» в Flash IDE, в коде появится номер строки, вызвавшей ошибку.

2 голосов
/ 03 ноября 2009

Очевидное решение состоит в том, чтобы вообще перестать использовать такой общий подверженный ошибкам код. Вы никогда не должны использовать тип '*' и почти никогда не должны использовать тип 'Object'.

Чтобы поймать его во время выполнения, вы всегда можете сказать:

if(obj == null)
  throw new Error("null obj passed in!!");

if(obj.nonExistentProperty == null)
  throw new Error("obj doesn't have the prop!! the obj was: "+obj);
0 голосов
/ 05 октября 2009

TypeError не даст вам больше информации, если вы ее поймаете.

Насколько я знаю, не существует никакого известного способа достичь этого (т. Е. , который объект выдал ошибку).

Лучше всего будет установить точку останова в начале функции и исследовать переменные вручную. Это то, что я делаю, и это хорошо работает для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...