Подтвердить что ты не робот

Прерывает ли выполнение исключения 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, но это, как правило, приводит к чрезвычайно вложенным функциям.

4b9b3361

Ответ 1

Да, нечеткие исключения приводят к фатальным ошибкам, которые останавливают выполнение script. Таким образом, функция do_some_database_stuff не будет вызываться, если выбрано исключение. Вы можете больше узнать об исключениях в в этой статье.

Ответ 2

Посмотрите руководство по исключениям на PHP.

Когда генерируется исключение, код после этого заявления не будет выполняется, и PHP попытается найти первый соответствующий блок catch. Если исключение не обнаружено, PHP Fatal Ошибка будет выдана с помощью "Непонимания" Исключение... ", если только обработчик был определен с помощью set_exception_handler().

http://ch.php.net/exceptions

Итак, да, остальная часть функции не выполняется, вместо этого возникает ошибка fata.
Если вы поймаете исключение, выполнение script продолжается в соответствующем блоке catch, все "между" функцией, которая генерирует исключение и блок catch, не выполняется.