<!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>