СПО в российских школах

Команда ALT Linux рассказывает о внедрении свободного программного обеспечения в школах России
Март 4, 2011

BASIC-256. Глава 18

Методические материалы
Автор: Владимир Черный

Продолжаем публиковать перевод книги Джеймса Рено. Эту главу перевел Владимир Черный.
Оглавление:

Где взять BASIC-256

Глава 18 Ловушки для ошибок времени исполнения

Если вы работали над примерами и создавали свои программы, то видели ошибки, случающиеся, когда программа выполняется. Такие ошибки называются «ошибки времени исполнения» (по английски: «runtime errors»). BASIC-256 включает группу специальных команд, которые позволяют запрограммировать восстановление после ошибки или их обработку.

Перехват ошибок, даже если вы об этом не думаете, может вызвать проблемы. Его следует использовать только если это нужно и отключать такие ловушки, когда в этом нет необходимости.

Перехват ошибок

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

1 onerror errortrap
2
3 print "z = " + z
4 print "все еще работает после ошибки"
5 end
6
7 errortrap:
8 print "Я поймал ошибку!"
9 return

Программа 99 Простой пример перехвата ошибок.

Я поймал ошибку!
z = 0
все еще работает после ошибки

Пример вывода программы 99 Простой пример перехвата ошибок.

onerror метка

Создает ловушку для ошибки, программа автоматически переходит к подпрограмме, определенной меткой, когда произойдет ошибка.

Какая ошибка произошла?

Иногда знание того, что произошла ошибка не достаточно. Есть функции, которые возвращают номер ошибки (lasterror), строку программы, где произошла ошибка (lasterrorline), текстовое сообщение, поясняющее суть ошибки (lasterrormessage) и дополнительные сообщения об ошибке (lasterrorextra).

Программа 100 модифицирует предыдущую программу и печатает деталировку произошедшей ошибки.


 1 onerror errortrap
 2
 3 print "z = " + z
 4 print "все еще работает после ошибки"
 5 end
 6
 7 errortrap:
 8 print "Ловушка активирована!"
 9 print " Ошибка = " + lasterror
10 print " На строке = " + lasterrorline
11 print " Сообщение = " + lasterrormessage
12 return

Программа 100 Ловушка для ошибок с комментариями

Ловушка активирована!
Ошибка = 12
На строке = 3
Сообщение = Неизвестная переменная
z = 0
все еще работает после ошибки

Пример вывода программы 100 Ловушка для ошибок с комментариями

lasterror или lasterror()
lasterrorline или lasterrorline()
lasterrormessage или lasterrormessage()
lasterrorextra или lasterrorextra()

Четыре функции возвращают информацию о последней перехваченной ошибке. Значения остаются неизменными, пока не произойдет еще одна ошибка.

lasterror Возвращает номер последней перехваченной ошибки. Если ошибок не было, возвращает нуль. См. Дополнение J Номера ошибок — там полный список перехватываемых ошибок.
lasterrorline Возвращает номер строки, где произошла ошибка
lasterrormessage Возвращает строку описания ошибки
lasterrorextra Возвращает строку с дополнительным описанием ошибки. Для большинства ошибок эта функция ничего не выводит.

Отключение режима перехвата ошибок

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

Оператор offerror отключает режим перехвата ошибок. После него, любая ошибка приведет к остановке выполнения программы.

 1 onerror errortrap
 2 print "z = " + z
 3 print "Продолжаю работать после первой ошибки"
 4
 5 offerror
 6 print "z = " + z
 7 print "Продолжаю работать после второй ошибки"
 8
 9 end
10
11 errortrap:
12 print "Перехват ошибок активирован"
13 return

Программа 101 Отключение перехвата ошибок

Перехват ошибок активирован
z = 0
Продолжаю работать после первой ошибки
ОШИБКА в строке 6: Неизвестная переменная

Пример вывода программы 101 Отключение перехвата ошибок

============================

Где скачать BASIC-256:

Для дистрибутивов ALT Linux

Windows версия
http://basic256.org (http://www.sourceforge.net/projects/kidbasic)

Как установить BASIC-256 в Linux

Для Альт Линукс: настроить репозиторий и обновить/установить пакет через synaptic или apt
Для rpm-based дистрибутивов: rpm -Uvh <имя_пакета>.rpm

Оставьте комментарий