Javascript - - - ieblog български
приложения за изчистване на грешки
Нека разгледаме един прост пример скрипт за изчисляване на разстоянието между две точки - (0, 2) и (12, 10):
хвърли нова грешка ( "Не може да се вземе корен квадратен от отрицателно число. ');
Този скрипт съдържа грешка - не на квадрат разлика от координатите. Това води до факта, че ще се върне неправилни резултати, както и в други случаи, възниква грешка за някои вход функция pointDistance. За да разберете какво трасиране на стека, нека да разгледаме тази грешка с помощта F12 Developer Tools, и погледнете в раздела Сценарий:

трасиране на стека се извежда на конзолата в клаузата за улов. и след като става ясно, че се появи грешка в squareRoot функция. тъй като тя се намира в горната част на комина. За да разрешите този проблем, разработчикът не е необходимо да отидете твърде далеч в четене на стека. Тя е нарушено предпоставка за функция squareRoot. и, ако погледнем на комина на едно ниво, става ясно защо това се е случило: на израза в squareRoot кол функционира себе си трябва да бъде параметрите за площада.
DOM и Error.stack Изключения
Var DIV = document.createElement ( "DIV);
хвърли нова грешка (e.toString ());
Вече сте на сигурно се чудите дали да се използва като модел. Това е най-подходящ за развитието на библиотеките, комунални услуги. Вие трябва да решите дали искате да скриете вашия код за работа с DOM или просто да изпълни задачата. Ако искате да се скрие за работа с DOM, поставяне на съответните операции в опит / блок за прихващане и генериране на обекти за грешка може да не е правилният подход.
проблеми с производителността
Получаване стека следа започва по време на производството на Грешка на обекта; това изисква преминаването на ток стека на изпълнение. За да се избегнат проблеми с производителността при преминаване особено голям стак (може би дори рекурсивно стека верига), Internet Explorer събира по подразбиране само топ 10 стека рамки. Въпреки това, тази опция може да бъде конфигуриран чрез задаване на статичен имота Error.stackTraceLimit различно значение. Това е глобален параметър, и това трябва да бъде променено, за да генерира грешка. в противен случай няма да се отрази на стека.
асинхронни изключения
хвърли нова грешка ( "Не може да се вземе корен квадратен от отрицателно число. ');
Когато тази програмка, ще видите, че следата на стека се покаже след кратко забавяне. По това време, ще видите, че в долната част на комина не е Глобалния кодекс. и Anonymous функция. В действителност, това не е една и съща функция, тъй като анонимен функция за обратно извикване предава setTimeout. Тъй като загубил контекста заобикалящата обработката на обаждане, може да не бъде в състояние да се определи каква е причината за обратно извикване. Ако се вгледате в сценарий, в който обаждане се регистрира, за да се справят с кликване случай на няколко различни ключове, не можете да кажете с това, което се отнася до регистриран обратното повикване. Аз трябва да кажа, че това е незначително ограничение, тъй като в повечето случаи проблемните области ще бъдат идентифицирани в горната част на комина.
Тест интерактивна демонстрация

Вижте този интерактивен тест демонстрация. Използването на Internet Explorer 10 в Windows 8 Consumer Preview. Можете да изпълни код в контекста на EVAL и разгледа грешката, ако това се случи. Когато кодът в Internet Explorer 10, можете да изберете ред код, който прати показалеца върху линията на грешка в следата на стека. Вие сте свободни да въведете код в кода, или да изберете един от малкото примери в списъка. В допълнение, когато примери кодовите могат да бъдат настроени Error.stackTraceLimit.
Референтни материали могат да бъдат открити в документацията на MSDN за Error.stack и stackTraceLimit.
- Роб Pavese (Rob Paveza), главата на програмата, по време на работа Чакра