Bu PHP script bir istisna veya bir hata atmak ister misiniz?

4 Cevap php

Ben veritabanı sorguları çalışan bir PHP komut dosyası var. Şimdi, bir sorgu başarısız olursa, ben bir hata tetikleyebilir ya da bir istisna olmalıdır? Ben ikinci yaparsanız, betik çalıştırma istisna karşı karşıya sonra duracaktır fark ettim.

Aşağıdaki gibi benim kod:

if (!$this->connection[0]->query($this->query))
    throw new Exception($this->connection[0]->error);

Olguda (başarısız sorgu) için bu tür durumlar kullanmanın artıları ve eksileri nelerdir?

4 Cevap

genel hata işleme stratejisi ve bu işleve geçirilen sorguları bağlıdır. Kendisi çok iyi bir fikir olduğunu Exceptions Fırlatma, IMHO, if onlar bir yerde yakaladı ve işlenir.

What are the pros and cons of using exceptions for this kind of cases (failed queries)?

Basitçe:

  • Pros: uygulama, incelikle başarısız sorguyu işlemek gerekirse eğer bunu log ve taşıyabilirsiniz.
  • Cons: performans.

O dedi, ben yanlış soruya odaklanarak olabilir düşünüyorum. You should onlar ne olabilir zaman durumları işleme olabilir, ama çok, çok nadiren gerçekleşmesi gerekir. sorgu başarısız makul bir şansı varsa, o sorgu kendisi oldukça herhangi bir hata daha da odak noktası olmalıdır mekanizması işleme.

Bu derken hata nedeniyle vurmak herhangi performansı dengelemek için validation bunu kısmak neden olabilir sorgunuz için herhangi bir giriş, ve speed, bir araç olarak sorgu iyileştirilmesi anlamına taşıma. Diğer bir deyişle, sorgu başarısız ve böyle bir devlet elde değil emin olun ne olacağını öğrenmek.

Bu benzetme düşünün: Eğer bir potansiyel sızdıran tekne (sorgu) olarak göle gidiyoruz eğer, (hata işleme) bir dalış kıyafeti giyen hakkında çok endişe edilmemelidir sen yapma konusunda emin tekne su geçirmez olması gerektiği gibi .

Ben sorgu başarısız olursa durumun ne kadar kötü bağlıdır düşünüyorum. Bu sorgu düzgün yürütmek kritik olduğunu, sonra kesinlikle istisna ile gitmek.

Siz karar verin hangisi, incelikle hata / durum ele emin olun. (Ki ben tadı. Yakalamak, vb.)

Ayrıca this stackoverflow question bir göz atmalısınız.

Bu harici bir web sitesi için ise, ben geliştirme aşamasında ayrıntılı olarak hataları işlemek için eğilimindedir. Site canlı gitmek için hazır olduğunda, ben hataları, güvenlik nedenleriyle özellikle veritabanı detayları hakkında son kullanıcıya çok fazla ayrıntı vermek için çalışın.

Bu taş cevap bazı set değil, raporlama ve dış sitelerinde hataları işlerken güvenliği akılda tutun. Bu kadar sadece bir not harici bir web sitesi olmayabilir.