Я взял ваш код и добавил печать с обратной трассировкой и выполнение кода, чтобы вы могли видеть, что происходит.
Ответом на ваш вопрос будет то, что программа продолжает выполнение в части catch блока try catch и переходит к коду после него, когда это делается с ошибкой.
Это выглядит примерно так (яулучшено форматирование с оригинала).Вы можете увидеть пример ниже.
#0 Foo->methodThree() called at [/php_playground/index.php:25] <br>
#1 Foo->methodTwo() called at [/php_playground/index.php:16] <br>
#2 Foo->methodOne() called at [/php_playground/index.php:46] <hr>
methodTwo caught error
#0 Foo->methodTwo() called at [/php_playground/index.php:16] <br>
#1 Foo->methodOne() called at[/php_playground/index.php:46] <hr>
methodTwo continuing execution
#0 Foo->methodTwo() called at [/php_playground/index.php:16] <br>
#1 Foo->methodOne() called at [/php_playground/index.php:46] <hr>
methodOne continuing execution
#0 Foo->methodOne() called at [/php_playground/index.php:46]
, поэтому ответом на ваш вопрос будет то, что программа продолжает выполнение в части catch блока try catch и переходит к коду после него, когда это делается с ошибкой.
Вот код, который я использовал для этого отпечатка, чтобы вы могли поиграть с ним самостоятельно.
class Foo
{
public function methodOne()
{
$this->methodTwo();
echo "<p>methodOne continuing execution</p>";
debug_print_backtrace();
echo "<hr>";
}
public function methodTwo()
{
try {
$this->methodThree();
} catch (Exception $e) {
echo "<p>methodTwo caught error</p>";
debug_print_backtrace();
echo "<hr>";
}
echo "<p>methodTwo continuing execution</p>";
debug_print_backtrace();
echo "<hr>";
}
public function methodThree()
{
debug_print_backtrace();
echo "<hr>";
throw new Exception('exception happened');
}
}