За последние 24 часа нас посетили 16503 программиста и 1677 роботов. Сейчас ищут 922 программиста ...

Вопрос по Exception

Тема в разделе "Прочие вопросы по PHP", создана пользователем CeperaI99I, 20 сен 2009.

  1. CeperaI99I

    CeperaI99I Активный пользователь

    С нами с:
    19 июн 2009
    Сообщения:
    30
    Симпатии:
    0
    Адрес:
    Талгар
    PHP:
    1.  
    2. <?php
    3. class MyException extends Exception {
    4. // некоторые изменения класса Exception
    5. }
    6.  
    7.  
    8. try {
    9.     fopen('file.txt'); // файл не существует. здесь бросается исключение MyException c помощью set_error_handler()
    10.     } catch(Exception $e) {
    11.         echo $e;
    12.         } catch(MyException $m) {
    13.             echo $m;
    14.             }
    15. ?>
    Вопрос: Почему исключение перехватывается в первом блоке catch и как сделать чтобы оно перхватывалось во втором?
     
  2. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
  3. CeperaI99I

    CeperaI99I Активный пользователь

    С нами с:
    19 июн 2009
    Сообщения:
    30
    Симпатии:
    0
    Адрес:
    Талгар
    я уже читал мануал но так и не понял. можно Объяснить?
     
  4. TheShock

    TheShock Активный пользователь

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
    Вот корректная запись:
    PHP:
    1. <?php
    2. try {
    3.     fopen('file.txt'); // файл не существует. здесь бросается исключение MyException c помощью set_error_handler()
    4. } catch(MyException $m) {
    5.     echo $m;
    6. } catch(Exception $e) {
    7.     echo $e;
    8. }
    9. ?>
     
  5. CeperaI99I

    CeperaI99I Активный пользователь

    С нами с:
    19 июн 2009
    Сообщения:
    30
    Симпатии:
    0
    Адрес:
    Талгар
    Спасибо, все ясно!
     
  6. TheShock

    TheShock Активный пользователь

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
    то есть более общее исключение надо писать позже.
    Если а наследуется от б, а б от в, то надо сначала писать а, потом б, потом в.