За последние 24 часа нас посетили 17367 программистов и 1215 роботов. Сейчас ищут 1478 программистов ...

переход в catch() после exit()

Тема в разделе "PHP для новичков", создана пользователем zkv, 3 окт 2016.

  1. zkv

    zkv Новичок

    С нами с:
    19 сен 2016
    Сообщения:
    10
    Симпатии:
    0
    Добрый день, помогите разобраться:
    Почему после выполнения ф-ции exit(), ф-ция __Launch($tpl_file) исполняется. При этом дебагер не ловит эту ветку и выходит из программы после exit().
    PHP:
    1. try
    2. {
    3.     redirect();
    4. }
    5. catch(Exception $ex)
    6. {
    7.     __Launch($tpl_file);
    8. }
    9. function redirect()
    10. {
    11.     exit();
    12. }
    13. function __Launch($tpl_file, $error = false)
    14. {
    15. //здесь код
    16. }
     
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.584
    Симпатии:
    1.762
    Потому что exit приводит к немедленному завершению работы программы
     
  3. zkv

    zkv Новичок

    С нами с:
    19 сен 2016
    Сообщения:
    10
    Симпатии:
    0
    @mkramer, да, но разве он не должен при этом игнорировать блок catch
    При этом, register_shutdown_function в коде не обнаружено
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    вообще ничего не должно выполняться после exit, и это не функция даже.
     
  5. zkv

    zkv Новичок

    С нами с:
    19 сен 2016
    Сообщения:
    10
    Симпатии:
    0
    Прошу прощения, не заметил строку в блоке try
    Код (Text):
    1. throw new Exception('launch');
    Но она стоит после функции, которая вызывает exit(). Почему исключение срабатывает?
    Код (Text):
    1. try
    2. {
    3.     redirect();
    4.     throw new Exception('launch');
    5. }
    6. catch(Exception $ex)
    7. {
    8.     __Launch($tpl_file);
    9. }
     
  6. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    @zkv вот вы привели код, который не работает так, как вы это описали. Зачем? Какой в этом смысл?