2010-02-24 28 views

cevap

5

logic_error Bu istisnalara temelidir.

Bunlar tüm mantıksal hatalardır: Girişle ilgili yanlış olan bir şey çıktının mantıksız olacağı şekilde yanlıştır. Bu yüzden, doğrudan, onu doğrudan kullanmanıza gerek olmadığını söylüyorum, çünkü bu dört düşünceyi düşündüğüm herhangi bir mantık hatası. Ama bunlar size kategorinin ne olduğu hakkında bir fikir veriyor.

+2

Kodumuzda hata yakaladığımızda logic_error istisnasını atmak uygun olur mu? Örneğin. assert() yerine kullanın. – sivabudh

+4

Muhtemelen hayır. 'assert', * programcı hataları içindir. Bir şey kontrol etmek null, vb., Kullanıcı girişine bakılmaksızın * gerçekleşmemesi gereken şeylerdir. Tersine, istisnalar, bir süre içinde gerçekleşmesi beklenen ve yakalanıp işlenen şeyler içindir. – GManNickG

+0

@GMan: Çalışma zamanında oluşabilecek hataları yakalamak için iyi ol'umuzu kullanmak yerine hangi istisnayı kullanabilirim? Bence assert harika, ama zarif çıkışlar için onları işlemek için istisna kullanmak isterim. – sivabudh

2

GMan daha önce işaret ettiği gibi, öncelikli olarak diğer istisna sınıfları için bir temel. Temel olarak bir iddia olan bir şey için doğrudan kullanmayı düşünebilirsiniz. Örneğin. Bazı kodlar, yürütmeden önce belirli bir nesneye dayanıyorsa, yürütülürse ve bu nesne henüz oluşturulmamışsa, logic_error (bir türev yerine) atması uygun olabilir.