Прерывает ли выполнение исключения PHP?
<?php
function some_function($arg) {
if($filter->check_for_safe_input($arg)) {
throw new Exception("Hacking Attempt");
}
do_some_database_stuff($arg);
}
?>
В приведенном выше примере кода do_some_database_stuff
когда-либо вызывается, если check_for_safe_input
выходит из строя, или исключение останавливает выполнение функции? Это то, о чем я никогда не был уверен, и обычно я просто придерживаюсь функций, подобных do_some_database_stuff
в инструкции else, но это, как правило, приводит к чрезвычайно вложенным функциям.
Ответы
Ответ 1
Да, нечеткие исключения приводят к фатальным ошибкам, которые останавливают выполнение script. Таким образом, функция do_some_database_stuff
не будет вызываться, если выбрано исключение. Вы можете больше узнать об исключениях в в этой статье.
Ответ 2
Посмотрите руководство по исключениям на PHP.
Когда генерируется исключение, код после этого заявления не будет выполняется, и PHP попытается найти первый соответствующий блок catch. Если исключение не обнаружено, PHP Fatal Ошибка будет выдана с помощью "Непонимания" Исключение... ", если только обработчик был определен с помощью set_exception_handler().
http://ch.php.net/exceptions
Итак, да, остальная часть функции не выполняется, вместо этого возникает ошибка fata.
Если вы поймаете исключение, выполнение script продолжается в соответствующем блоке catch, все "между" функцией, которая генерирует исключение и блок catch, не выполняется.
Ответ 3
Исключение, если оно не зацепилось, завершит выполнение script.
См. глава руководства PHP об исключениях