Istisnalar uygun kullanımı?

1 Cevap php

Biz özel bir PHP uygulaması için bir koleksiyon sınıfı geliştiriyoruz. İçinde, map, each, vb adlı fonksiyonlar vardır

Bir tartışma kötü bir argüman ile bazı işlevlerini çağırarak hakkında en getirilmiştir. Örneğin:

public function each($fn) {
    // ...
}

// ...

$collection->each('not a function');

Için çağrı each, bir istisna mıyım? O dönmelidir null? Biz kötü argüman görmezden ve bir girişimde nonexistant işlevini çağırmak için yapıldığında zamanı hatası izin vermeli miyim? Ben bu davayı ele nasıl emin değilim.

1 Cevap

istisnalar istisnai durumlarda, kötü değil kodlayıcılar için vardır.

Use assertions instead. See http://php.net/manual/en/function.assert.php

Bu harici kullanım için bir kütüphane için ise, maruz yöntemleri istisnalar genel olarak, iddialar kodunuzu gerekli koşulları sağladığını dahili doğrulamak için daha uygun, mantıklı (örn. InvalidArgumentException) ama olabilir.

Belki de başka bir örnek kaynak nedeniyle düşen bir sunucuya, vb erişilebilir olmayacak bazı olasılık var gibi bir istisna iyi kullanımı dosya erişimini yaparken ve şeyleri açıklamak yardımcı olacaktır

Ayrıca bkz: http://stackoverflow.com/questions/117171/design-by-contract-tests-by-assert-or-by-exception