>>  <<  Ркв  Ввд  JfC  LJ  Фрз  Слв  Изм  Рзг  !:  Помощь  Словарь

J. Ошибки и Прерванные Состояния

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

Непосредственное исполнение

   2+'a'
|domain error
|   2    +'a'

Исполнение файла сценария

   t=: '2*3',(10{a.),'2+''a''',(10{a.),'2+3'
   t                          Сценарий
2*3
2+'a'
2+3

   t 1!:2 <'test'             Записать в файл

   0!:011 <'test'             Выполнить файл, прод. при ошибке, показывать (011)
2*3
6

   2+'a'
   2+3
5

   0!:001 <'test'             Выполнить файл, ост. при ошибке, показывать (001)
   2*3
6

   2+'a'
|domain error
|   2    +'a'
|[-2]

Пользовательский глагол

   g=: 3 : ('1+y' ;  ':' ; '2+x+y')

   3+g 'a'
|domain error: g
|   1    +y

   13!:0 (1)                  Разрешить прерывание
   3+g 'a'
|domain error: g
|   1    +y
|g[0]

      y                       Отступ в шесть пробелов говорит о прерванном сост.
a

      y=. 12                  Изменить локальное значение y

      13!:4 ''                Продолжить выполнение с текущей строки
16                            Результат, с учетом измененного y
В прерванном состоянии можно выполнять предложения, просматривать и изменять значения локальных имен и продолжить исполнение. Ошибки вызывают прерывание только если это явно разрешено (фразой 13!:0]1). В прерванном состоянии отступ для ввода состоит из шести пробелов.

Прерывания и механизмы отладки управляются глаголами семейства 13!: , как описано в Приложении A. Полный список ошибок приведен в Приложении D.




>>  <<  Ркв  Ввд  JfC  LJ  Фрз  Слв  Изм  Рзг  !:  Помощь  Словарь