Состояния целевого устройства, исключения

Хорошо, что вы здесь! О состояниях целевого устройства действительно есть что узнать!

В состоянии RUN виртуальная машина выполняет ваше приложение. Это не значит, что какой-то код выполняется постоянно.

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

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

Состояния PAUSE, BREAK и ABORT означают, что виртуальная машина остановлена и никакой код не выполняется.

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

Значения переменных на панели Watch обновляются, как только целевое устройство выходит из состояния RUN.

Вот чем отличаются эти три состояния:

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

Указатель программы не отображается, потому что никакая процедура (функция) не выполняется.

Это состояние возможно, только если вы вручную приостановили выполнение (Debug > Pause) или перезагрузили целевое устройство (Debug > Restart).

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

Указатель программы будет отображаться.

Это состояние возникает, если вы вручную приостановили выполнение (Debug > Pause) или выполнение остановилось на точке останова.

Состояние ABORT означает, что выполнение приостановлено из-за исключения. Это также означает, что виртуальная машина была занята выполнением обработчика события.

Указатель программы будет отображаться. Ниже приведена таблица возможных исключений:

КодОписаниеОстановка в режиме отладки?Остановка в режиме релиза?
HALTВызвано выполнением метода sys.halt. Это исключение генерируется самой программой, так что не вполне «настоящее».ДаДа
DIV0Деление на ноль.ДаНет
OOR(1)Выход за границы диапазона (то есть попытка обращения за последний элемент массива). Само ошибочное обращение будет предотвращено.ДаНет
FPERRОшибка вычислений с плавающей запятой.ДаНет
IOC(2)Недопустимый код операции.ДаДа
OUM(2)Обращение за пределы пользовательской памяти.ДаДа
TDLF(2)Не удалось загрузить двоичную библиотеку.ДаДа
  1. Проверки выхода за границы выполняются только для массивов Tibbo BASIC, которые являются «безопасными». Массивы TIBBO C небезопасны, и у TiOS нет возможности перехватывать для них выход за границы.
  2. Вы никогда не должны видеть эти ошибки. Сообщите нам, если вам встретится любая из них!
Исходный материал Tibbo обновлён 12 сентября 2022Оригинал на docs.tibbo.com · Сообщить об ошибке