Dizideki Mağaza PHP Durumlar

4 Cevap php

Istisnalar gerçekten benim için yeni bir konu olduğundan bu, gitmek için doğru yolu ise ben gerçekten emin değilim. Birden çok özel durumlar yakalamak (script yürütülmesine devam edelim) ve sonra tüm istisnalar nedeniyle iade edebilmek için bir dizi istisnalar saklamak mümkün mü?

Dedi göre, sadece uygulama (script) öldüren bir hatayı gösteren daha istisnalar kullanmak edebilmek için harika olurdu

Teşekkürler!

4 Cevap

İlk başta, istisna işleme bu gibi görünüyor kadar önemsiz değildir, bu yüzden bu biraz zaman yatırım gerekir. :-)

You should look at exceptions explicit as an error you can't handle in the current code/function. If you can solve the problem, there is no need to throw and handle an exception.
Don't use it as mechanism to handle expected behavior.

Sure it is possible to catch multiple exceptions, continue the code execution and store them in an array, but it doesn't make sense. You through an exception in your code if you really encounter an error you cannot deal with in your current code (for example suddenly closed sockets, etc.). The rule then is:
Only catch an exception if you can do something useful with it or throw another exception

Izleme hatalar için uygulama bir dizide saklayarak ve daha sonra bunları almak başka tekniklerini kullanmalıdır. Küçük uygulama hataları ve uyarıları belgelemek Günlüğü kullanın (örneğin Log4PHP mükemmel çerçeveler vardır).

By that said, it would be awesome to be able to use exceptions to more than just showing an error that kills the application (script)

Sadece eğer bu konuda yapabileceği bir şey yok, bir istisna uygulama öldürmek gerekir. Ayrıca çoğu durumda, komut en yüksek düzeyde tüm özel durumları yakalamak bir yığın iz hata oturum ve kullanıcıya güzel bir hata mesajı yerine sadece her şeyi "öldürmek" sunmak için iyi bir fikirdir. :-)

For just some syntax examples see W3Schools PHP Exception Handling. A larger article about this topic is posted on Devshed.

Bu istisnalar için ne gerçekten değil. Birçok dilde, istisnalar sadece yakalamak ve sadece daha sonra muayene için bir dizi içine kıpırdamak verebilecek nesneleri vardır, ama probbly gerçekten kötü bir tasarım bulunuyor.

Mekanizmasının çok isim "olağanüstü" bir şey hemen işlemek gerektiğini oldu gösterir.

Sadece senaryoyu öldürmekten daha onlarla daha fazla yapabilirim - ama San Jacinto doğru daha sonra işlemek için bir dizi bunları saklamak için özellikle iyi bir uygulama olmayacağını söyleyerek bulunmaktadır.

Belki bu bir okuma olmalıdır (örnekler dahil, onlar yararlı olacak):

http://php.net/manual/en/language.exceptions.php

İşte size yerine sadece yürütme durdurma daha istisnaları kullanabileceğiniz diğer bazı yollar göstermelidir.

İyi şanslar!

Larry Duvar Soğan maddenin yaptığı son Devlette bu konuda yazıyor. Herkes bir hata atma / çerçeve yakalamak sahip olmak istiyor. Gerçeği sadece kişinin kötü-kontrol kodunu işlemek için çerçeve güvenmek kodlama uygulaması kötü olur, bir. Artı, o hata ayıklamak için bu gerçekten zor hale getirir.

Benim tavsiyem bunun yerine böyle bir şey, olacaktır:

try {
    $fh = fopen("foo.txt", 'r');
    if (!$fh) {
       throw new Exception("foo.txt not found");
    }
    # ...
} catch (Exception $e) {
    # report errors
}

Onlar ne kadar sadece mesajların bir tampon onları toplamak:

@errors = array();
if (! (is_file("foo.txt") && $fh = fopen("foo.txt", 'r')) ) {
    $errors []= "foo.txt not found";
}
# ...

Bu şekilde, yığın işaretçisi Exception için bir işleyici bulmak için çalışırken her yere atlıyor değildir.

PHP çok fazla Java, IMHO gibi olmaya çalışır.