php istisnalar / hataları nasıl?

2 Cevap php

3. bölüm kütüphaneleri kullanarak onlar tarayıcıya istisnalar atmak ve dolayısıyla komut öldürmek eğilimindedir.

örn. im doktrinini kullanarak ve veritabanına yinelenen bir kayıt eklemek eğer bir istisna olacaktır.

ben bu durumları işleme için en iyi yöntem nedir, merak ediyorum.

Ben her zaman bir deneyin yapmalıyım ... yakalamak?

ama bu tüm komut dosyası üzerinde ve i kullandığınız her fonksiyon / sınıf için yakalamak ... ben denemek zorunda kalacak anlamına gelmez? Ya da hata ayıklama için sadece bir?

i oldukça resim alamadım.

Bir rekor zaten veritabanında varsa neden ben "Kayıt zaten var" kullanıcı söylemek istiyorum.

Ve ben bir kütüphane ya da bir işlev kodu varsa, ben her zaman "yeni Expcetion ($ message, $ kod) atmak" kullanmak gerekir ben bir hata oluşturmak istediğiniz zaman?

Bir / tanıtıcı istisnalar / hataları oluşturmanız gerekir nasıl bir ışık döken.

Teşekkürler

2 Cevap

Bu istisnaları yakalamak için tek yolu bir try catch bloğunu kullanmaktır. Ya da istisna Eğer durum tespiti yapmak ve kayıt eklemeye çalıştığınızda önce kayıt zaten var olmadığını kontrol etmek gerekir ilk etapta meydana istemiyorsanız.

Eğer her yerde bu kullanarak gibi hissediyor o zaman belki (Dont tekrar edin) bu sizin için ilgilenir bir yöntem oluşturmanız gerekir.

Ben Doktrini biliyorum, ama beton kullanımı ile ilgili, belki yinelenen bir girdi, gibi bir şey ile karşı karşıya olup olmadığını belirlemek için bir yol var değil:

try { /* Doctrine code here */ } catch (DuplicateEntryException $e) { /* The record already exists */ } catch (Exception $e) { /* Unexpected error handling */ }

Ya da belki durum kodu yinelenen girdileri için MySQL hata kodu olan 1062 eşit olmadığını kontrol etmelisiniz.


Bir istisna atabilir herhangi bir kod bir try / catch bloğu içinde olmalıdır. Eğer yöntem bir istisna atar hangi bilemeyiz çünkü PHP zordur.

Ayrıca kullanıcıya yığın izini görüntülemek önler ana PHP dosyasında büyük bir try / catch bloğu olmalı ve bu neden kaydeder. Belki bunun için set_exception_handler kullanabilirsiniz.