PHP - İyi ya da Kötü - İstisnalar için tüm hatalar dönüştürme?

4 Cevap php

Bu İstisnalar tüm PHP hatalar dönüştürmek global olarak kötü bir uygulama olarak kabul edilir merak ediyordum. Aşağıdaki gibi bir şey kullanılabilir:

function exception_error_handler($errno, $errstr, $errfile, $errline ) {
    throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
    return false;
}

Ben varsayım sadece normal hatalar atmak istiyorum kod bazı parçaları etrafında "denemek / catch" kullanarak başlayabilirsiniz olduğunu varsayalım.

O İyi / Kötü bir durum söz konusu değilse, bu uygulamadan ortaya çıkabilecek Advisor tavsiye bazıları nelerdir?

4 Cevap

Ne yazık ki, bu ölümcül / ayrıştırma / etc üzerinde çalışmaz. hataları ...

Tam hatırlamıyorum, ama ben bunu denedim ve bazı durumlarda böyle bir mesaj aldım "çözüm olmadan istisna değil ..." ama bu sonucu elde etmek için koşulları hatırlayamıyorum ettik. Ama şimdi ben bu şekilde ve tamamen memnun kullanın.

Sizin kontrolünüz dışında gerçekten şeyler için istisnalar kullanın.

Good:

try {
   if (fopen('file.txt', 'w') === false) {
      throw new Exception('File could not be opened for write access.');
   }
} catch (Exception $e) {
   echo $e->getMessage();
}

Bad:

try {
   if (strlen($_POST['username']) < 5) {
      throw new Exception('Username too short');
   }
} catch (Exception $e) {
   echo $e->getMessage();
}

Birinci yol ne zaman onun bir şey oluştuğunda çünkü iyi olduğunu kullanıcı veya uygulama kontrol edemiyorum. Bu dosyayı açmak için olamaz? birçok nedeni olabilir.

İkinci yolu trigger_error kullanmalısınız try / catch bir overkill kullanımıdır. İkinci yol aşağı adı doğrulama kurallarını bilmeden bir kullanıcı için.

Kısacası kullanımı istisnalar size ne test kontrol edemiyorum zaman. Istisnalar fazla yükü var Hatırla sonra trigger_error lutfen :)

Kötü fikir. Ötesinde daha yavaş ve (her hata oluştuğunda, çünkü bir nesne oluşturur) daha fazla bellek kullanmak, ölümcül hataları semantik yanlış. Bir istisna beklenmeyen ama kurtarılabilir hata :)

uygulama düzeyi hataları, sınıf hataları başlayarak - İstisnalar Desen her şey için gerçekten iyi ise geçmişte Java / .net uzun yıllar çalışmış ve şimdi son yıllarda php olan, o, bütün bu çeşitli hata sözleşmeler olması gerçekten can sıkıcı sistem hataları - şey.

Her kitaplık / fonksiyonları farklı hatalar işler çünkü gerçekten, hataları türleri her türlü yönetmek için çalışırken iş oldukça çok yatırım.