Ben PHP göreli bir acemi değilim, ama PHP'nin hata işleme istisna dışında (ve bana die()
başladı alamadım) serpiştirilmiş hataları ve uyarılar ile, bir getto biraz gibi geliyor bana. Gibi, ben, yaratma, yorumlama ve benim uygulamada tüm hata davalarına hakkında gitmek için en iyi nasıl emin değilim.
Saldırı Benim genel planı aşağıda kabaca gibidir:
- Geldikleri gibi hataları sarmak için
set_error_handler()
kullanılarak, Özel durumlar içine tüm uyarıları / hataları dönüştürün. - Kod Savunmaya preemptively yanlış gitmek için bekliyoruz şeyler kontrol. Ben doğrudan hata işleyemez sadece istisna atar. Gerektiğinde olağan
try/catch
blokları kendimi atmayın istisnalar işlemek için yerinde olacaktır. - O kendi
try/catch
benim tüm uygulama (yani benimindex.php
nokta-giriş dosyası) sarın. Bu başarısız olursa, ben birHTTP 500
atmak ve uygun bir hata sayfası göstereceğim. Ben hala bozuk bir şablon dosyası gibi garip durumları kapsayacak böylece bu büyük ölçüde - Muhtemelen bu sayfayı tek bir derlenmiş dosya yerine başlığı / beden / bitişin bir koleksiyonu içerir olacaktır. Google'ın 500-sınıf hata sayfası çok farklı, her şeyden onlar koymak bakar neden bu olduğunu varsayalım. - Ben kendi istisna karar verirseniz ben ayarlıyoruz her şeyi işlemek için bekliyorum beri # 2 ve # 3, bir sonuç olarak, ben de not hatayı yakalamak, ve bunun yerine izin bekliyorum kabarcık tüm yol benim üst düzey işleyicisi kadar. Burada düşünce ne zaman olur bunu işleyemez eğer, ben muhtemelen başka bir yerde bunu işlemek için kötü donanımlı olmam. Ben bu hataları kendi alt sınıfı vererek düşünüyorum - belki
CriticalErrorException
- Bu bir e-posta yumurtlamaya / benim günlükleri doğrudan tespit edilebilir bu yüzden çabuk içine bakabilirsiniz. Genel olarak, ben bu may dev ne olduğunu şeyler olmasını bekliyorum, ancak üretim tarafından ütülenmelidir. - Üst bunu yapan herhangi bir hata, bir günlük dosyası yerine çalışma ile, veritabanında oturum alır. Kritik hatalar, yukarıda belirtildiği gibi, bir e-posta tetikler. Raporlama dosyasına üzerinde başarısız olursa - yani DB hata var - bu da bir e-posta tetikleyecektir.
Ben bu oldukça iyi çoğu durumlarda kapsar düşünüyorum, ama ben PHP çok yeniyim dediğim gibi ben bakan değilim köşe durumlarda ya da garip davranışlar varsa ben bilmiyorum.
Planımda kusurları nelerdir? Bunları nasıl aşabiliriz?