# bgerror

Команда bgerror предназначена для обработки фоновых ошибок.

          bgerror сообщение

## ОПИСАНИЕ

В Tcl нет встроенной команды bgerror. Если в приложении тем не менее необходимо обрабатывать фоновые ошибки, пользователь может определить собственную команду bgerror, например, как Tcl-процедуру.

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

Когда Tcl обнаруживает фоновую ошибку, он сохраняет информацию об ошибке и вызывает команду bgerror с помощью обработчика событий. Перед вызовом bgerror восстанавливаются значения переменных errorInfo и errorCode, которые были при обнаружении ошибки. После этого вызывается команда bgerror с единственным аргументом - сообщением об ошибке. Предполагается, что в приложении определена команда bgerror и что она выдает сообщение об ошибке надлежащим образом. Если при выполнении команды bgerror не произошло новой ошибки, возвращаемый ею результат игнорируется.

Если при исполнении команды bgerror произошла новая ошибка (например, если эта команда не существует), сообщение об ошибке поступает в канал вывода ошибок.

Если до вызова обработчиком событий команды bgerror произошло несколько фоновых ошибок, то, как правило, команда будет вызвана для каждой из обнаруженных ошибок. Однако, если сама команда bgerror возвращает код break (см. описание команды return), последующие ее вызовы пропускаются.

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