<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN> <html> <head> <title>bgerror</title> </head> <body> <h1>bgerror</h1> <p>Команда <strong>bgerror</strong> предназначена для обработки фоновых ошибок.</p> <pre> <strong>bgerror</strong> <em>сообщение</em> </pre> <h2>ОПИСАНИЕ</h2> <p> В Tcl нет встроенной команды <strong>bgerror</strong>. Если в приложении тем не менее необходимо обрабатывать фоновые ошибки, пользователь может определить собственную команду <strong>bgerror</strong>, например, как Tcl-процедуру.</p> <p>Фоновые ошибки - это ошибки в командах, которые не вызваны непосредственно из приложения. Например, фоновыми являются ошибки в командах, вызванных с помощью конструкции <a href=after.html><strong>after</strong></a>. Для нефоновых ошибок сообщение об ошибке возвращается через вложенные вызовы команд, пока не достигнет верхнего уровня приложения. После этого приложение выдает сообщение об ошибке в одной из команд верхнего уровня. При фоновой ошибке подобный процесс не достигает команд верхнего уровня и формирование сообщения об ошибке оказывается затруднительным.</p> <p>Когда Tcl обнаруживает фоновую ошибку, он сохраняет информацию об ошибке и вызывает команду <strong>bgerror</strong> с помощью обработчика событий. Перед вызовом <strong>bgerror</strong> восстанавливаются значения переменных <a href= tclvars.html#errorInfo><strong>errorInfo</strong></a> и <a href= tclvars.html#errorCode><strong>errorCode</strong></a>, которые были при обнаружении ошибки. После этого вызывается команда <strong>bgerror</strong> с единственным аргументом - сообщением об ошибке. Предполагается, что в приложении определена команда <strong>bgerror</strong> и что она выдает сообщение об ошибке надлежащим образом. Если при выполнении команды <strong>bgerror</strong> не произошло новой ошибки, возвращаемый ею результат игнорируется.</p> <p>Если при исполнении команды <strong>bgerror</strong> произошла новая ошибка (например, если эта команда не существует), сообщение об ошибке поступает в канал вывода ошибок.</p> <p>Если до вызова обработчиком событий команды <strong>bgerror</strong> произошло несколько фоновых ошибок, то, как правило, команда будет вызвана для каждой из обнаруженных ошибок. Однако, если сама команда <strong>bgerror</strong> возвращает код break (см. описание команды <a href=return.html><strong>return</strong></a>), последующие ее вызовы пропускаются.</p> <p>В чисто Tcl-приложениях команда <strong>bgerror</strong> не реализована. Однако, в Tk-приложениях определена процедура <strong>bgerror</strong>, которая выводит сообщение об ошибке в диалоговое окно и позволяет пользователю просмотреть стек, описывающий, где именно эта ошибка произошла.</p> </body> </html>