Раскрутка стека
Инструкцию 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; просмотров: 1077;