Обробка помилок javascript

Матеріал з Iteach WIKI
Версія від 12:25, 28 листопада 2013, створена Alexlojko92 (обговореннявнесок) (1. Синтаксичні помилки)

(різн.) ←Попередня ревізія • Поточна версія (різн.) • Слідуюча ревізія→ (різн.)
Перейти до: Навігація, пошук

«Обробка помилок JavaScript»

1. Синтаксичні помилки

1. 1. Невідповідність або недоречність фігурних та круглих дужок Фігурні дужки JavaScript використовує фігурні дужки {}, щоб оточити команди, які будуть працювати в якості блоку. Ці блоки можуть бути вкладеними один в одного коли є декілька комбінацій, циклів і умовних операторів. Якщо у вас є блоки вкладені в кілька глибоких рівнів, стає дуже легко в них загубитися, особливо коли є багато відкриттів та закриттів дужок , а саме легше розгубитися , там, де є кілька кварталів, тому завжди після використання відкритої дужки «{»потрібно бути близьким до закритої дужки «}». Інша можлива проблема, коли у вас багато блоків коду, вкладених один в одного, і ви губите рівні на яких перебуваєте в межах гніздування, що в кінцевому підсумку призводить до розміщення коду не на тому рівні – як наслідок ви отримуєте не той результат на який сподівалися. Найпростіший спосіб виправити проблеми, пов'язані з невідповідними або недоречними дужками є отримання друку коду і використання різних видів маркерів для позначення відповідної пари. Починати потрібно з початку коду і виділити перший блок відкритою дужкою «{»одного кольору, яку необхідно відразу ж закрити закритою дужкою «}»того ж кольору, для того щоб потім не загубити кінець даного блоку (не сплутати з іншими). Потім рухатися по коду шукаючи наступний блок який виділяється дужками «{}» іншого кольору. Якщо ви будите дотримуватися кольору, для того щоб показати рівні вкладеності, то дуже скоро ви зможете побачити до якого блоку належить код.

Круглі дужки Деякі вирази в JavaScript повинні бути укладені в круглі дужки (що відкривають та закривають). Зроблена спроба укласти вираження в круглі дужки, але відкриваюча дужка не поставлена. Зверніть увагу на використання круглих дужок у наступному прикладі. Для виправлення помилки необхідно додати ліву дужку у вираз обчислення.


1. 2. Відсутність або недоречність крапки з комою та двокрапки. Крапка з комою Кожен оператор Javascript повинен закінчуватися крапкою з комою. Іноді ви бачите код Javascript, де кожен оператор знаходиться на окремій лінії і крапки з комою були перервані, але якщо вам з якоїсь причини потрібно буде змінити такий код , то ви скоро виявите, що він перестає працювати, і це тому що ви забули поставити крапку з комою. Найпростіший спосіб вирішення цієї проблеми є переформатувати код так, щоб кожна заява подавалася на окремому рядку і переконатися, що кожен рядок закінчується крапкою з комою. Ви завжди можете поєднувати лінії разом, але бажано це робити поступово і тільки після того, як ви отримаєте робочий код.

Двокрапка Трійчастий (з трьома операндами) умовний оператор вимагає наявності двокрапки між другим (true) і третім (false) операндами. Зроблена спроба створити вираз за допомогою трійчастого умовного оператора, але не вказано двокрапка між другим і третім операндами. Трійчастий (з трьома операндами) умовний оператор вимагає наявності двокрапки між другим (true) і третім (false) операндами. Для того щоб виправити помилку потрібно вставити двокрапку між другим і третім операндами.

1. 3. Неправильне використання операторів break, continue і default. Оператор break Неможливо використовувати оператор break поза тілом циклу. Ключове слово break використовується для завершення циклу або оператора switch. Воно має бути впроваджене в тіло циклу або оператора switch. Однак за ключовим словом break може слідувати мітка, наприклад: break labelname; При використанні вкладених циклів або операторів switch, коли необхідно припинити цикл, який не є самим внутрішнім, необхідно використовувати тільки ключове слово break з міткою. Для виправлення помилки необхідно переконатися, що ключове слово break знаходиться всередині циклу або оператора switch.

Оператор continue Оператор continue може використовуватися тільки усередині тіла: • циклу do-while, • циклу while, • циклу for, • циклу for / in. Для виправлення помилки переконайтеся, що оператор continue використовується всередині тіла: • циклу do-while, • циклу while, • циклу for, • циклу for / in.

Оператор default Оператор default може використовуватися в операторі switch тільки один раз. Варіант за замовчуванням завжди є останнім оператором варіанту в операторі switch (прохідний варіант). Для виправлення помилки видаліть всі зайві оператори варіанту default з оператора switch (в операторі switch можна використовувати не більше одного варіанту за замовчуванням).

Оператор return Оператор return слід використовувати тільки всередині тіла функції . Виклик функції за допомогою оператора являє собою вираження . Всі вирази мають значення; оператор return використовується для вказівки значення, що повертається функцією. Загальна форма наступна: return [ expression ] ; При виконанні оператора return значення виразу обчислюється і повертається як значення функції. Якщо вираз відсутній, то повертається значення undefined . При виконанні оператора return виконання функції зупиняється, навіть якщо в тілі функції залишилися інші оператори. Винятком з цього правила є наявність оператора return в блоці try , для якого вказаний відповідний блок finally . У цьому випадку перед завершенням роботи функції виконується код в блоці finally . Якщо функція завершує роботу через досягнення кінця тіла функції без виконання оператора return , повертається значення undefined (це означає , що результат функції не можна використовувати в складі більшого вирази). Щоб виправити помилку необхідно видалити оператор return з основної частини коду ( глобальної області).

1. 4. Невідповідність котирування або Apostropies. З HTML і JavaScript, ви можете брати текстові рядки або в лапки (") або виділяти з обох сторін апострофом ('). Щоб зробити все правильно, особливо якщо у вас HTML код в окремому document.write., ви повинні встановити стандарт про те, як використовувати апостроф для котирування на HTML і JavaScript. Можлива проблема тоді, коли ви випадково випустили апостроф, що призведе до наступного,все закінчилося як частина текстового рядка, і, отже, код не працює. Є також можливість включення апострофа в сам текст. Тому апостроф у тексті не повинно бути витлумачено як кінець тексту, він може бути "плаваючим" якщо перед ним поставити зворотній слеш: document.write ('Нехай з \' на '.).

2. Помилки під час виконання JavaScript

Помилки під час виконання JavaScript відбуваються при спробі скрипта вчинити дію, яке система не може виконати. Помилки під час виконання можуть виникнути, якщо обчислюються вирази змінних або виділяється пам'ять.

2.1. Посилання на об'єкти Код JavaScript, який знаходиться в головній частині сторінки, яка не міститься в функції, буде виконуватися перед завантаженням сторінки, а код в тілі сторінки буде виконуватися як частина сторінки, що завантажується. Код JavaScript викликається з обробника подій OnLoad, що буде працювати після завершення завантаження сторінки. Функції будуть працювати, коли вони викликаються в іншому місці коду JavaScript. Обробник подій буде працювати, тільки тоді, коли пов'язані події. Якщо ваш JavaScript підтримує доступ до вмісту веб-сторінки за допомогою об'єктної моделі документа, то ті об'єкти, на які ви посилаєтесь повинні бути завантажені раніше, ніж ви будете посилатися на них. Посилання на об'єкт, який не закінчив завантаження, видасть повідомлення про помилку. Для усунення цієї проблеми ви повинні переконатися, що ви не намагаєтеся посилатися на будь-які об'єкти на сторінці з JavaScript, який знаходиться в головній частині сторінки, якщо вона міститься в функцію, яка викликається після завершення завантаження сторінки. Посилання на об'єкти з JavaScript, які знаходяться в тілі сторінки можуть працювати періодично в залежності від порядку, в якому JavaScript і об'єкт, який називається завантажуються. Щоб виправити ці проблеми потрібно перемістити обробку об'єкта в обробник подій для веб-сторінки.

2.2. Зарезервоване слово використовується як ім'я змінної Є цілий ряд слів, які мають особливе значення для мови JavaScript. Ці зарезервовані слова не можуть бути використані в якості змінних або імен функцій. Якщо ви випадково використовуєте зарезервоване слово як ім'я змінної, то результат вашої обробки не буде таким, як ви очікували. Кращий спосіб уникнути цього, ознайомитися з переліком зарезервованих слів, щоб знати, яких слів слід уникати. Якщо ви вирішите слідувати відповідному стандарту іменування,то ви зможете уникнути використання зарезервованих слів, як імен змінних, тому що ваш стандарт іменування буде звичним для вас і ви в цьому самі зможете переконатися.

2.3. Відсутність параметрів у виклику функції При визначенні функції можна визначити число аргументів, що функція очікує отримати. Коли ви пишете код для виклику функції, то необхідно задати відповідні параметри виклику, таких параметрів може бути дуже багато, тому потрібно вміти орієнтуватися в їх кількості. Перевірити кількість параметрів, що функція очікує отримати, можна тоді, коли ви проводите кодування виклику цієї функції. Якщо аргументам були дані розумні імена, то вони також повинні бути досить очевидними, що й повинно бути передано в кожному параметрі. Якщо дотримуватися даної умови , то тоді коли ви вирішите додати додатковий аргумент у функцію стане не можливо зробити помилку. Всі дзвінки на цю функцію, тепер повинні бути оновлені, щоб передати додатковий параметр. Якщо функція у зовнішньому коді Javascript, що пов'язано в багатьох веб-сторінках на вашому сайті, то легко пропустити виклик функції на одній із сторінок.

2.4. Не підтримується об'єктна модель документа W3C стандарт об'єктної моделі документа підтримується більшістю сучасних браузерів, включаючи Internet Explorer 5 +, Opera 5 + і Netscape 6 і вище. Імовірно ви використовуєте один з цих браузерів у себе і тому скрипти, які кодуються за допомогою стандартних DOM будуть працювати, коли ви перевіряєте їх у своєму браузері. У деяких відвідувачів може бути запущений старіший браузер, такий як Internet Explorer 4 або Netscape 4. Якщо ви хочете, щоб ваш скрипт підтримувався у цих відвідувачів, то вам необхідно закодувати ваш сценарій крос-браузером DOM . Є багато сценаріїв, які можуть бути завантажені з Інтернету, які відносяться до IE4/NS4 скриптів і такі скрипти підтримують й більш пізні версії Internet Explorer (який до цих пір підтримує IE4 DOM для зворотної сумісності). Ці скрипти не будуть працювати в браузерах, відмінних від Internet Explorer 4 або Netscape 4. Для усунення цієї проблеми необхідно переписати сценарій так, щоб використовувати стандартний DOM або крос-браузер DOM замість специфічних IE4/NS4. Ви можете сказати, що скрипт підтримує старі браузери якщо він посилається на document.all або document.layers.