En iyi istisna yönetimi uygulamaları veya önerileri? [kapalı]


12

Programlarımdaki iki temel sorunun kod yapım / organizasyonum ve hata işlemem olduğunu düşünüyorum. Code Complete 2'yi okuyorum, ancak potansiyel problemlerle çalışmak için okunacak bir şeye ihtiyacım var.

Örneğin, bir web sitesinde, yalnızca kullanıcı verileri javascript yoluyla değiştirirse bir şey olursa, bunun için yazıyor musunuz? Ayrıca, ne zaman hata yakalamıyorsunuz? Girdi olarak bir dize ve int bekleyen bir sınıf yazdığınızda ve bunlar bir dize ve int değilse, bunu kontrol ediyor musunuz, yoksa yanlış parametreler geçiren çağrı yöntemine girmesine izin veriyor musunuz?

Bunun burada tek bir cevapta cevaplanamayacak geniş bir konu olduğunu biliyorum, bu yüzden aradığım şey genellikle uygun istisna işleme uygulamasını öğretmek olarak kabul edilen bir kitap veya kaynak.


1
hangi dili ve geliştirme platformunu kullanıyorsunuz?
Yusubov

1
"Kod temiz" bu sorun hakkında iyi bir bölüm olduğunu düşünüyorum
Hoàng Long

@ElYusubov ne dedi. Karşılaştığınız dilin / platformun uygulama ayrıntıları ve standartları, en iyi uygulamalar üzerinde çok fazla etkiye sahiptir.
vaughandroid

Yanıtlar:


12

Hatırlanması gereken iyi şeylerden biri, istisna işleme gerçekleştirmektir when there is a need.

.NET geliştirme platformu için sadece MSDN yönergelerini izleyin - İstisnaların En İyi Uygulanması için En İyi Yöntemler ve bu güzel kod projesi makalesini kontrol edin - .NET'te İstisna İşleme En İyi Uygulamalar

Ancak, aşağıdaki yönergeler çoğunlukla herhangi bir geliştirme platformu için geçerlidir:

  • İş mantığını istisnalarla yönetmeyin. Bunun yerine koşullu ifadeler kullanın. Eğer if-else deyimi ile bir kontrol açıkça yapılabilirse, okunabilirliği ve performansı düşürdüğü için istisnalar kullanmayın (örn. Boş kontrol, sıfır kontrole bölün). .

  • İstisna adları, istisnanın nedenlerini belirten açık ve anlamlı olmalıdır.

  • Bir yöntemi uygularken hata koşulları için istisnalar atın. Örneğin, FileNotFoundException yerine -1, -2, -3 vb değerlerini döndürürseniz, bu yöntem anlaşılamaz.

  • En iyi Exception sınıfı yerine belirli özel durumları yakalayın. Bu, ek performans, okunabilirlik ve daha spesifik istisna yönetimi getirecektir.

  • Koşullu null denetim, NullPointerException özelliğinin yakalanmasına alternatif değildir. Bir yöntem null döndürürse, if-else deyimiyle denetleyin. Bir dönüş NullPointerException oluşturabilirse, yakalayın.

  • Fiyat nedeniyle istisnayı yeniden atmamaya çalışın. Yeniden atma bir zorunluluk olsaydı, yeni bir istisna oluşturmak yerine aynı istisnayı tekrar at. Bu ek performans getirecektir. Bu özel duruma her katmana ek bilgi ekleyebilirsiniz.

  • Geçerli İstisna sınıfını (örn. UserException, SystemException ve alt türleri) genişleterek kendi istisna hiyerarşinizi tanımlayın ve kullanın. Bunu yaparak istisnalarınızı uzmanlaştırabilir ve yeniden kullanılabilir bir modül / istisna katmanı tanımlayabilirsiniz. bu linkte takip etmek için daha fazlası


2
Bazı iyi genel noktalar, 5. noktanızın ("Koşullu boş kontrol ...") çok açık olduğunu düşünmüyorum.
vaughandroid

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.