Что такое исключение в PHP и что такое try & catch? - PullRequest
4 голосов
/ 07 января 2010

Я довольно новичок в использовании объектов / классов в PHP, и мне любопытно узнать ИСКЛЮЧЕНИЯ , TRY и CATCH

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

Ниже этого примера приведен пример использования try и catch. Мне кажется, это то же самое, что и использование if / else. Возможно, я ошибаюсь, именно так я их вижу, ничего не зная. Я понимаю, что вы можете кодировать что угодно в PHP, не используя их, так в чем же причина, есть ли какая-то польза от использования этих вещей по сравнению с традиционными способами?

<?PHP
// sample of using an exception
if($something === $something_else){
    //do stuff
}else if($something === $something_else_again){
    //do stuff
}else{
    throw new Exception('Something went wrong!');
}

попробуй и поймай

//and try and catch
try{
    $thumb = PhpThumbFactory::create('/path/to/image.jpg');
}
catch (Exception $e){
    // handle error here however you'd like
}
?>

Ответы [ 2 ]

6 голосов
/ 07 января 2010

Короче говоря, исключением является " специальное условие, которое изменяет обычный ход выполнения программы " (цитирование википедии)


Вас могут заинтересовать (по крайней мере) эти несколько статей:

Они должны дать вам некоторые интересные элементы - особенно второй, для "что является исключением в php"


Одним из преимуществ (которое является частью основной идеи) является:

  • у вас есть «нормальный» код в блоке try
  • , и большая часть кода "решения проблем" находится в блоке catch
  • что означает меньше кода "решения проблем" в середине "нормального" кода
  • , а также позволяет вам перегруппировать части кода "работа с проблемами"
2 голосов
/ 07 января 2010

Исключения - это способ отделить код обработки ошибок от «обычного» кода. По сути, эта стратегия позволяет вам написать блок кода и не беспокоиться о том, что может пойти не так (блок try). Затем, позже, вы перехватываете исключения, которые могли быть сгенерированы во время выполнения блока, и обрабатываете их соответствующим образом. Это более чистый способ обработки ошибок.

...