Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Виды ошибок




Отладка, перехват и обработка ошибок

При написании сценария, содержащего несколько строк, в нем нередко возни­кают ошибки. В этом разделе рассматривается процесс поиска и исправления ошибок в сценариях.

Отладка представляет собой общий процесс обнаружения и исправления ошибок в сценарии. Перехват ошибок означает выявление ошибок в сценарии, а обработка ошибок — привлечение средств манипулирования ошибками. Например, для отладки сценария в него можно ввести ряд строк кода, в которых проверяется конкретное условие (перехват ошибок), и предписать MAXScript отображать диалоговое окно при появлении ошибки (обработка ошибок).

Отладка и обработка ошибок является неотъемлемой частью процесса напи­сания сценариев. Помимо вновь внедренного отладчика сценариев (MAXScript Debugger), в MAXScript имеется целый ряд других средств и способов отладки кода. К ним относятся цветовое кодирование сценария, проверка уравновешен­ности скобок, применение внутрипроцессных операторов вывода (на печать или в заданном формате), а также интерпретация сообщений об ошибках и обратное отслеживание по стеку.

В сценарии может возникнуть несколько видов ошибок. Ниже приведены ти­пичные ошибки.

• Syntax — имя переменной или функции введено неверно либо предпринята попытка воспользоваться функцией недозволенным способом.

• Logic — часть сценария выполняет не то, что нужно, поскольку она построена неверно.

• Usererror — эта ошибка возникает при взаимодействии пользователя со сценарием. Так, если в сценарии требуется, чтобы пользователь выделил объект со свойством.radius, в самом сценарии должна быть выполнена проверка соответствия выбранного объекта заданному критерию. Если же объект не соответствует критерию выбора, в сценарии может быть выведено сообщение, предлагающее пользователю выбрать другой объект.

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

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

for i = 1 to 10 print i

В приемнике команд появляется следующее сообщение об ошибке:

-- Syntax error: at for, expected "do" or "collect"

-- In line: for i


Приложение

Это сообщение означает, что в приведенной выше строке кода пропущено клю­чевое слово do после числового значения 10.

Ошибка периода выполнения возникает при попытке осуществить в выражении недопустимую операцию во время выполнения сценария, например:

arr = #(1); arr[0]

В приемнике команд появляется следующее сообщение об ошибке:

-- Runtime error: array index must be +ve number, got: 0

Это сообщение означает, что в выражении предпринята попытка доступа к элементу массива по индексу 0, но поскольку индексирование массивов начинается с 1, в данном выражении возникает ошибка.

Логическая ошибка возникает в том случае, если предполагаемый результат не получается, несмотря на соблюдение всех синтаксических правил, например:

y = if x < 0 then 0

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

Ошибка периода компиляции возникает ещё до начала выполнения кода, например:

(

y = (1/(х as float))

-- Compile error: Unexpected end-of-script

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

Ниже приведен еще один пример ошибки периода компиляции. И эта ошибка не является синтаксической: local x = 0

В приемнике команд появляется следующее сообщение об ошибке:

-- Compile error: no local declarations at top level: x

-- In line: local x =

На первый взгляд, приведенное выше простое выражение выглядит правильно. Где же в нем ошибка? В данном выражении предпринята попытка объявить пере­менную x как локальную на верхнем уровне сценария, а не в блоке кода. Но локальная переменная может быть объявлена только в блоке кода. Все переменные верхнего уровня считаются глобальными независимо от того, объявлены ли они таковыми.

Пользовательская ошибка возникает в том случае, если пользователь выполняет действие, не соответствующее текущему состоянию сценария. Допустим, что поль­зователь щелкнул на кнопке, в обработчике событий которой проверяется выбор объектов определенного типа, однако такие объекты не были выбраны. Во избежание
Приложение

ошибки и возможного аварийного сбоя в сценарий следует включить код для проверки данной ситуации (т.е. перехвата ошибки) и совершения соответствующего действия (т.е. обработки ошибки). В дополнение к этому, возможно, потребуется отобразить окно сообщения, в котором пользователю предлагается выбрать сначала какой-нибудь другой объект. Дополнительные сведения по данному вопросу приведены в разделе "Перехват и обработка ошибок" далее в этом приложении.




Поделиться с друзьями:


Дата добавления: 2014-10-15; Просмотров: 774; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.015 сек.