Опубликован: 19.10.2006 | Уровень: для всех | Доступ: платный
Лекция 3:

Сообщения об ошибках

< Лекция 2 || Лекция 3: 12 || Лекция 4 >

Что дальше?

Как только строка с ошибкой найдена, необходимо решить, что делать. Чаще всего это будет синтаксическая ошибка — либо разорванная строка, либо опечатка, либо двойные кавычки вместо одинарных (несбалансированные кавычки) и тому подобное.

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

Множественные ошибки

Ничто не раздражает больше, чем многократные сообщения об ошибках. Можно только сидеть и смотреть, как на экране плодятся окна. Можно решить, что многократные окна сообщений означают многократные ошибки. Не всегда.

JavaScript — это чрезвычайно логичный язык, требующий, чтобы все шло своим чередом, в линейной последовательности. Допустим, имеется 10 ошибок в длинном сценарии. Сообщения накладываются одно на другое, и последняя обнаруженная компьютером ошибка окажется сверху. Не пытайтесь сразу ее исправлять, возможно, в действительности ее даже не существует.

Может случиться так, что первая ошибка сценария вызывает все остальные. Так что исправлять ошибки следует последовательно с начала документа HTML. Сколько раз бывало так, что выскакивает 20 окон с ошибками, а разрешить все проблемы удается исправлением одной единственной первой ошибки!

Поэтому исправлять ошибки надо по одной от начала до конца. И каждый раз, исправив одну ошибку, запускайте сценарий. Можно получить 20 сообщений об ошибках, а исправлять придется одну или две.

Отсутствие определения

Эта ошибка времени выполнения также достаточно распространена. Она означает, что в сценарии что-то не согласовано. Надо следить за тем, чтобы строка кода не появлялась в коде слишком рано, когда используемые в ней переменные еще не определены. Если дело не в этом, попробуйте стереть строку с ошибкой, ведь ее всегда можно вернуть на место. Случаются и банальные опечатки. Приглядитесь к тексту повнимательнее, опечатки случаются чаще, чем можно себе представить.

Вот практически все, что на данном этапе можно сказать про ошибки. Правда, этих знаний хватит, чтобы исправить 99% возникающих неприятностей. Просто помните, что сообщение — это на самом деле плюс. Без них пришлось бы сидеть, тупо уставясь в пустую страницу, не имея ни малейшего понятия, в чем проблема. Они весьма полезны, если взглянуть на них с правильной точки зрения.

Задание

Ниже показан сценарий с ошибкой. Загружая страницу с этим сценарием, браузер должен выдать два сообщения об ошибке. Исправьте их. Некоторые команды покажутся незнакомыми, но это неважно. Сообщения содержат достаточно информации, чтобы исправить сценарий.

Если сценарий выполнится правильно, то на странице появится текущая дата.

Подсказка: возможно, сначала будет получено только одно сообщение. Вторая ошибка появится, когда будет исправлена первая.

Код с ошибкой

<SCRIPT type="text/javascript">
...x
dothis = new Date()
month = dothis.getMonth()
month = (month * 1) + 1
day = dothis.getDate()
year = dothis.getFullYear()
document.wrte(" ",month,"/",day,"/",year," ")
</SCRIPT>

Возможное решение

Так действует скрипт — показывает дату. Чтобы заставить его работать, надо исправить две ошибки. Первой должна быть синтаксическая ошибка, утверждающая, что ...x не определено. Проще всего исправить эту ошибку будет удалением текста. Она является просто шуткой.

При повторном запуске сценария должна появиться другая синтаксическая ошибка, утверждающая, что document.wrte не является функцией. Причина ошибки — опечатка в слове write.

< Лекция 2 || Лекция 3: 12 || Лекция 4 >
Елена Сапегова
Елена Сапегова

После прохождения теоретической части пришло письмо об окончании теоретической части курса, будет ли практическая часть?

Эдуард Семынин
Эдуард Семынин

Здравствуйте.

Перестали быть видны лекции и тесты практикума по программированию на JavaScript. Уже второй день из моего аккаунта виден лишь план занятий. В чем может быть проблема?

 

Alex Chekalov
Alex Chekalov
Украина, Poltava
Виктория Вернер
Виктория Вернер
Украина, Днепропетровск, ДИИТ, 2012