PHP: hata işleme için kontrol akışı nedir?

2 Cevap php

Ben bu saçma görünüyor eğer öyleyse ben özür PHP yeniyim. Etrafa aradım ve ben aradığım özellikle izah şey bulamadı.

Sonuçta ben iki gol var.

  1. Üretim, beklenmeyen bir hata oluştuğunda, kullanıcı varsayılan bir "ayy" sayfa gösteriyor.
  2. Beklenen bir hata oluştuğunda, PHP ölmeden hallederim.

PHP hata işleme Benim zihinsel modeli Ben herhangi bir güvenle ileriye hareket edemez yeterli sivilceli ve ben süreci hakkında herhangi bir iyi belgeleri bulmak mümkün olmamıştır.

Bazı suni örnekler vermek.

  1. kullanıcı biz ayyy mesajı görüntülemek, DB için bir istek, bağlantı başarısız yapar.
  2. kullanıcı bir istek, script biz ayyy mesaj görüntüler, doğru ayrıştırma değil yapar.
  3. kullanıcı iyimser kilitlemeyi kullanarak bir güncelleme ile DB sorgulamak, bir istekte bulunur. Bu başarısız, bu yüzden nesne güncellendi kullanıcıyı bilgilendirmek.

Ben karışıklık çoğu senaryo ölüyor ve ne hatalar (varsayılan işleyicisi kullanarak) yok neden ne hatalar çevreleyen olduğunu düşünüyorum, ve komut öldüğünde, nasıl incelikle kullanıcıyı bilgilendirmek mi?

Ayrıca, standart php fonksiyonları / nesneleri herhangi bir istisna kullanabilirim? Ben bir C tarzı daha özel durumlar ele seçerseniz herhangi bir noktada sürpriz olacak değilim ben? Bu PHP6 değiştirmek olacak mı? Eğer öyleyse ben c stili ve istisnaları ile arasındaki farklılıklar üzerinde kağıt çaba ortaya koymak gerekir, ama eğer, ben değil sadece PHP5 boyunca sürekli c stili kullanmak istiyorum. Ben kesinlikle gerek olmadıkça ben çözümünde ilgileniyorum bir sorun değildir.

edit: I just realized the content doesn't quite match the title. I would like to know, when an error occurs, what is the logic flow for PHP? This way I can better understand how to go about achieving my goals with respect to error handling in PHP.

2 Cevap

tüf inşa PHP'nin çoğu gerçekten varsayılan kurulumunda ile baş edemez hataları tetikler.

Ancak özel bir hata işleyicisi kurma ve yerine hata bir istisna atarak bu geçici çözüm olabilir. (PHP olacak, mümkün olduğunda, dahili işleme hatası önce işleyicisi çalıştırmak, böylece aslında normal bir şekilde İstisnalar yakalayabilirsiniz.)

I've written a bunch of code you could use for this situation in my answer here: http://stackoverflow.com/questions/841500/php-exceptions-vs-errors

Php aslında oldukça çok berbat olduğunu dosyanızı ayrıştırmak yapamıyorsanız, php bir dosyayı ayrıştırmak yapamazsınız en şartlar altında oldukça zor kilitlenebilir. Yazmaya deneyebilirsiniz rağmen kendi eval 's a file before including it and just skips if eval başarısız olduğunu fonksiyon içerir. Eğer temelde olsa dosyaları güvenebilirsiniz emin olmak gerekir.

İstisnalar iyi PHP5 entegre edilmiştir. Bunlar Java / C + + istisnalar olarak aynı try/catch sözdizimi vardır. Beklenen bir hata oluştuğunda bunları kullanın.

Eğer özel bir göstermek istiyorum "oops" sayfası trigger_error ile birlikte set_exception_handler kullanabilirsiniz. Daha fazla ipucu düşünün için this bağlantısı.