Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как обработать ошибки компонента ComboBox (http://www.flasher.ru/forum/showthread.php?t=201791)

wolfenstein 22.06.2013 00:32

Как обработать ошибки компонента ComboBox
 
Как обработать ошибки компонента ComboBox, при том что он сам был ранее удалён со сцены, а ссылка на него обнулена.

Если удалить со сцены ComboBox во время раскрытого выпадающего списка, то список со сцены не удаляется почему-то, и что самое обидное продолжает слушать события, и как следствие выдаёт ошибки:

Код:

TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
        at fl.controls::ComboBox/onListItemUp()

Посоветуйте, куда можно вставить try...cath чтобы эту ошибку можно было обработать?
Хотя, лучше посоветуйте как сделать чтобы выпадающий список тоже удалялся со всеми его слушателями?

Добавлено через 17 часов 46 минут
Конечно идея переопределить метод - позволят скрыть факт ошибки, но само событие продолжает всплывать:

Код AS3:

                override protected function onListItemUp(e:MouseEvent):void
                {
                        if (!flagDestroy)
                        {
                                try
                                {
                                        super.onListItemUp(e);
                                }
                                catch (err:TypeError)
                                {
                                        trace(err.message, ' -> onListItemUp');
                                        e.stopImmediatePropagation();
                                        e.preventDefault();
                                        this.flagDestroy = true;
                                }
                        }
                        else
                        {
                                trace(' onListItemUp');
                                e.stopImmediatePropagation();
                                e.preventDefault();
                        }
                }

А вот как удалить само событие, ничего не могу придумать

MikroAcse 22.06.2013 21:10

Удаляйте слушатели.
try...catch = это сущий ад, который нужен только для очень, повторюсь, и очень редких случаев.
А вообще:
Код AS3:

try {
  //...
} catch (err:*) {
  // словит ВСЕ ошибки
}


caseyryan 23.06.2013 21:16

Зачем писать err:* ?
Ясно что туда всегда передается наследник класса Error, поэтому и запись можно сделать такую:
err:Error
Цитата:

Посоветуйте, куда можно вставить try...cath чтобы эту ошибку можно было обработать?
Лучше для начала посмотреть код, где он создается, ибо кэп мне подсказывает, что дело здесь совсем не в комбобоксе.


Часовой пояс GMT +4, время: 21:08.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.