PHP Kullanıcı hatalar vs Uygulama Hataları

1 Cevap php

Yani ileri geri çok tartışmadan sonra, ben think Kullanıcı Hatalar (Yani doğrulama sorunları, İzni Sorunlar vb) vs Uygulama / Sistem hataları işlemek için geçerli bir planı olabilir ne ile geldim.

Başvuru / Sistem Hataları özel bir hata işleyicisi (set_error_handler yoluyla ()) kullanılarak ele alınacaktır. Hatanın şiddetine bağlı olarak, kullanıcı bir genel hata sayfası (Ie Ölümcül Hata) yönlendirilmiş olabilir, veya hata sadece sessizce (yani E_WARNING) kaydedilebilir.

Bu hatalar büyük olasılıkla kullanıcılarının kontrolü (eksik dosya, Bad mantık, vb) dışında sorunları neden olanlardır.

Hataların ikinci seti Kullanıcı Tarafından Oluşturulan olanlar olacaktır. Bu olanları otomatik olarak bir hata tetikleyebilir olmayabilir ama biri olarak kabul edilecekti. Bu durumlarda ben "trigger_error () işlevini kullandığınızda ve tipik hata işleyicisi tarafından sessizce açmış olacak bir Şişkin veya bildirimi atmaya karar verdi. Daha sonra başka bir sayfaya veya ekrana kullanıcıyı yönlendirmek kadar geliştirici olacaktır Bundan sonra kullanıcıya daha anlamlı mesajın çeşit.

Bu şekilde herhangi bir tür bir hata her zaman kaydedilir, ancak kullanıcı hataları hala geliştirici özgürlüğü kendi şekillerde işlemek için izin. Yani Bunun tam repopulated ve neyin yanlış gittiğini bir mesaj ile geri onların form onları yönlendir.

Herkes bu yanlış bir şey görmek, ya da bir daha sezgisel bir yol var mı? Işleme hata benim yaklaşım herkesin kendi yollarını var ama tesis bir yolu olmalı tipik.

1 Cevap

Gerçekten exceptions old-fashion error handling üzerinden tercih. Avantajları şunlardır:

  • Sen hata işleme geciktirebilir: hata olur andan bir karar (durdurmak veya devam, ekran mesaj veya log) almaya gerek yoktur. Bu temizleyici kodu ve temiz çıktı (bir fopen çağrı yapıyoruz, her zaman bir mesaj yazamıyor) sağlar.

  • Siz grup benzer hatalar olabilir ve onun taşıma birleştirmek. Örn: Eğer orada bir dosyayı okumak çok olası hata durumları olduğunuzda, gerçekten tüm bunları tek tek dikkate almak gerekmez.

  • Sen normal iş akışının bir parçası olarak size tarif bu hata koşulları için özel durumlar oluşturabilirsiniz; UserNotAllowedException E_USER_ERROR karşılaştırın.

convert regular errors to exceptions için bazı hileler de var demektir.