Основные понятия и элементы


Результаты команд

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

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

        TCL_ERROR
        Указывает на имевшую место ошибку; строка содержит сообщение, описывающее ошибку. Дополнительно к этому, глобальная переменная errorInfo будет содержать словесную информацию о командах и процедурах, выполнявшихся при возникновении ошибки; глобальная переменная errorCode будет содержать машинно-читаемые данные об ошибке, если таковые доступны.

        TCL_RETURN
        Указывает на то, что была вызвана команда return, и что текущая процедура (или команда верхнего уровня, или команда source) должна немедленно завершиться. Строка содержит возвращаемое значение для процедуры или команды.

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

        TCL_CONTINUE
        Указывает на то, что была вызвана команда continue, и поэтому самый внутренний цикл должен приступить к следующей итерации. Строка должна всегда оставаться пустой.

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

        В некоторых случаях отдельные команды обрабатывают ошибочные ситуации сами и не сообщают о них наверх. Например, команда for проверяет наличие кода возврата TCL_BREAK и если находит его, то прекращает выполнение тела цикла и возвращает код TCL_OK вызвавшему субъекту. Также команда for обрабатывает коды TCL_CONTINUE, a Интерпретатор процедур обрабатывает коды TCL_RETURN. Команда catch позволяет программам Tcl перехватывать ошибки и обрабатывать их без последующего прекращения интерпретации команд.
Hosted by uCoz