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

Для "throw new Exception" требуется exit()?

Я пытаюсь выяснить, сохраняется ли код, расположенный после throw new Exception в PHP, - я пробовал его, и он, похоже, ничего не выводил, но хотел бы знать наверняка.

4b9b3361

Ответ 1

Нет, код после выдачи исключения не выполняется.

В этом примере кода я пометил строки, которые должны быть выполнены (поток кода), числами:

try {
    throw new Exception("caught for demonstration");                    // 1
    // code below an exception inside a try block is never executed
    echo "you won't read this." . PHP_EOL;
} catch (Exception $e) {
    // you may want to react on the Exception here
    echo "exception caught: " . $e->getMessage() . PHP_EOL;             // 2
}    
// execution flow continues here, because Exception above has been caught
echo "yay, lets continue!" . PHP_EOL;                                   // 3
throw new Exception("uncaught for demonstration");                      // 4, end

// execution flow never reaches this point because of the Exception thrown above
// results in "Fatal Error: uncaught Exception ..."
echo "you won't see me, too" . PHP_EOL;

Смотрите руководство PHP по исключениям:

Когда генерируется исключение, код, следующий за оператором, не будет выполнен, и PHP попытается найти первый соответствующий блок catch. Если исключение не перехвачено, PHP-фатальная ошибка будет выдана с сообщением "Uncaught Exception...", если обработчик не был определен с помощью set_exception_handler().

Ответ 2

Нет, код после инструкции throw не выполняется. Очень похоже на return.