Как я могу использовать исключение без смерти сценария? - PullRequest
2 голосов
/ 11 января 2010

Я бы хотел использовать исключение для обработки ошибок в части моего кода, но если код не сработал, я бы хотел, чтобы скрипт продолжился. Я хочу записать ошибку, хотя. Может кто-нибудь помочь мне разобраться в этом?


try{
    if($id == 4)
    {
      echo'test';
    }
}
catch(Exception $e){
    echo $e->getMessage();
}

echo'Hello, you should see me...'; <------ I never see this.. No errors, just a trace.

Ответы [ 2 ]

5 голосов
/ 11 января 2010

Вы должны поймать исключение:

// some code

try {
    // some code, that might throw an exception
    // Note that, when the exception is thrown, the code that's after what
    // threw it, until the end of this "try" block, will not be executed
} catch (Exception $e) {
    // deal with the exception
    // code that will be executed only when an exception is thrown
    echo $e->getMessage(); // for instance
}

// some code, that will always be executed


И вот пара вещей, которые вы должны прочитать:

2 голосов
/ 11 января 2010

В коде, который вызывает код, который может вызвать Исключение сделать

try { 
    // code that may break/throw an exception
    echo 'Foo';
    throw new Exception('Nothing in this try block beyond this line');
    echo 'I am never executed';
    throw new CustomException('Neither am I');
} catch(CustomException $e) {
    // continue here when any CustomException in try block occurs
    echo $e->getMessage();
} catch(Exception $e) { 
    // continue here when any other Exception in try block occurs
    echo $e->getMessage();
}

// script continues here
echo 'done';

Вывод будет (добавление разрывов строк для удобства чтения):

'Foo'                                         // echoed in try block
'Nothing in this try block beyond this line'  // echoed in Exception catch block
'done'                                        // echoed after try/catch block

Блоки Try / Catch также могут быть вложенными. Смотрите пример 2 на странице руководства PHP, ссылка на которую приведена выше:

try{
    try {
        throw new Exception('Foo');
        echo 'not getting here';
    } catch (Exception $e) {
        echo $e->getMessage();
    }
    echo 'bar';
} catch (Exception $e) {
    echo $e->getMessage();
}
echo 'done';

'Foo'  // echoed in inner catch block
'bar'  // echoed after inner try/catch block
'done' // echoed after outer try/catch block
<Ч />

Дальнейшее чтение в DevZone:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...