Оглавление

Что такое стек вызовов

Чтобы понять, как работают исключения, нужно рассказать о том, что представляет собой стек вызовов. По существу, стек вызовов (call stack) представляет собой запись, в которой указывается очередность вызова функций и методов в сценарии. Рассмотрим следующий пример:

function firstFunction() {
    secondFunction();
}
function secondFunction() {
    thirdFunction();
}
function thirdFunction() {
    echo "Добро пожаловать!";
}
firstFunction();

 

В процессе выполнения этого сценария функция firstFunction() вызовет функцию secondFunction(), которая, в свою очередь, вызовет функцию thirdFunction(). Что же будет представлять собой стек вызовов, если мы будем находиться внутри вызова функции thirdFunction()? Он будет выглядеть примерно так:

 

thirdFunction();
secondFunction();
firstFunction();

 

Теперь становится понятным, что стек вызовов — это ни что иное, как запись очередности вызова функций. Первой функцией, которая была помещена в стек вызовов, является функция firstFunction(), потому что именно она была вызвана первой из всех других функций, а текущая функция, thirdFunction(), находится вверху стека. По мере возврата результата этими функциями они покидают стек до тех пор, пока мы снова не вернемся к ним. Принцип стека вызовов является важной частью обработки исключений, о чем будет сказано далее.

Примечания:
  • Вам незнакомо понятие стека? Можно с вами поспорить, что вы наверняка видели его много раз, но даже представить себе не могли, что это и есть стек. Примером стека компьютера (или стека вызовов, или еще чего-нибудь подобного) в реальном мире является автомат для раздачи леденцов Pez! Вначале он пуст и заполняется по мере помещения в него леденцов. Вытаскивая леденцы, вы достаете их с верхушки автомата. По этому принципу работают и компьютерные стеки. Сначала вы “заталкиваете” данные в стек, а затем “выталкиваете” их обратно по мере необходимости.
Комментарии принадлежат их авторам. Мы не несем ответственности за их содержание.
Отправитель Нити