Раскрутка стека

Инструкцию throw можно использовать не только непосредственно в try-блоке, но и внутри любой функции, которая оттуда вызывается. При этом производится выход не только из функции, содержащей throw, но также и из всех промежуточных процедур.

<?php ## Инструкция try во вложенных функциях,

echo "Начало программы.<br>";

try {

echo "Начало try-блока.<br>";

outer();

echo "Конец try-блока.<br>";

} catch (Exception $e) {

echo " Исключение: {$e->getMessage()}<br>";

}

echo "Конец программы.<br>";

function outer() {

echo "Вошли в функцию "._METHOD_ ."<br>";

inner();

echo "Вышли из функции ". _METHOD_ ."<br>";

}

function inner() {

echo "Вошли в функцию "._ METHOD_ ."<br>";

throw new Exception("Hello!")

echo "Вышли из функции ". _METHOD_ ."<br>";

}

?>

//Результат работы данного кода:

Начало программы.

Начало try-блока.

Вошли в функцию outer

Вошли в функцию inner

Исключение: Hello!

Конец программы.

Данное поведение инструкции throw называют раскруткой стека вызовов функции, потому что объект-исключение последовательно передается из одной функции в другую, каждый раз приводя к ее завершению — как бы "отматывает" стек.








Дата добавления: 2015-08-26; просмотров: 1071;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.004 сек.