Ситуація: у вас баг. Трейс, дебаг, відтворення... результат - якась функція викликається 2 рази підряд. Або більше, ніж має, або в тих умовах, в яких вона не повинна викликатись (до ініціалізації). І все дуже складно - дуже багато різних подій, потенційних місць виклику функції і просто лінь )))) - що неможливо визначити зразу звідки йде косячний виклик. Зато умову, коли виклик функції відбувається неправильно, перевірити можна майже завжди, ну хоча б тупо поставивши лічильник. От в цю умову і пихаєм такий простий код:
var spr: Sprite;
spr.alpha = 1;
Що станеться при виконанні цього коду? - помилка. А що відобразиться у вікні флешплеєра про цю помилку? - правильно: те, що нам потрібно - повний шлях виклику нашої нещасної функції.
А джавістам за таке треба руки відривати, і до попи пришивати
ВідповістиВидалитикхе...
сорі)
А хіба нема штатного засобу виводити кудись тупо трейс?
В джаві вбахав вивести стактрейс в лог, і маєш щастя. І ніяких ексепшенів...
трейс тобі підкаже ВЕСЬ шлях його виклику?
ВідповістиВидалитиу нас такого нема.
Ну так повний шлях виклику і є стектрейс. Так, він доступний у джаві. Навіть цілий масив стектрейсів. Є ще один доволі топорний метод:
ВідповістиВидалитиnew Throwable().getStackTrace();
чи ше хужеє
new Throwable().printStackTrace();
це створює еrctgiy, fле не кидає його ніде, а просто тягне стрінг зі стектрейсом. Ізі.
А хіба у екшнCкріпті не можна написати шось типу
throw new Error("Aaaaaa!");
чи якось ше?
Але буває і так, що виклик методу іде через інтроспекцію на купу з рефлексією в абстрактних чергах рантайм-об’єктів, або ще як (господи, чого тільки дівелопери не видумують щоб легше писалось).
Тоді стактрейс веде в невідомий об’єкт, який фіг зна чого цю функцію викликав. Отоді да.
*еrctgiy, fле
ВідповістиВидалитиото пофіксав)
*ексепшн, але*
в as3 є аналогічний getStackTrace() в об'єкта еррор, який ловиться трай-кетчем
ВідповістиВидалититільки чомусь всім більше подобається хардкодить