Için PHP bir istisna nedir ve denemek ve yakalamak nedir?

2 Cevap php

PHP nesne / sınıfları kullanarak için oldukça yeni ve ben EXCEPTIONS, TRY merak ediyorum, ve CATCH

Aşağıdaki örnekte, tüm 3 kullanımda göstermişlerdir. Açıkçası bir özel durum hata tetikleme yolu çeşit ama neden anlamıyorum? Aşağıdaki kodda ben orada kolayca istisna parçası olmadan hata falan çeşit gösterebilirim?

Bu örnekte aşağıda denemek ve yakalamak kullanarak bir örnektir. Bu if / else kullanarak aynı olması bana görünür. Ben yanlış olabilir, bu hiçbir şey bilmeden onları görmek sadece bir yoldur, ben bunu nedeni geleneksel yollar vs bu şeyler üzerinden herhangi bir yararı, orada ne olduğu bu kullanmadan PHP şey kod olabilir fark?

<?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!');
}

denemek ve yakalamak

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

2 Cevap

Şeyleri kısası, bir istisna "special condition that change the normal flow of program execution" (quoting wikipedia) olduğunu


You might be interested by (at least) those couple of articles :

Özellikle ikinci, "ne php bir istisna" için - Onlar bazı ilginç unsurlar vermelidir


One of the advantages (which is part of the basic idea) is :

  • Eğer try bloğunda "normal" kodu var
  • ve "sorunları ile ilgili" kod büyük bölümü catch bloğunda
  • hangi daha az "normal" kod ortasında kodu "sorunlar ile ilgili" anlamına gelir
  • ve ayrıca kod bölümleri "sorunları ile ilgili" yeniden toplamak için izin verir

İstisnalar "normal" kod hata işleme kodunu ayırmak için bir yol vardır. Temel olarak, bu stratejinin bir kod bloğu yazmak ve (try blok) yanlış gidebileceğini ne dert sağlar. Sonra, sonra, sen bloğun yürütülmesi sırasında atılan ve onları uygun biçimde idare olabilir istisnaları yakalamak. Bu hataları işlemek için temiz bir yoldur.