SORU
26 AĞUSTOS 2008, Salı


Kontrol ve denetlenmeyen istisnalar ne zaman seçilmeli?

Kendi özel sınıf oluştururken Java (veya kontrol istisnalar dışında başka bir dil),, nasıl işaretli veya denetlenmeyen gerekip gerekmediğini karar veriyorsunuz?

İçgüdülerim olduğunu söylemek denetlenen bir durum olurdu denilen durumlarda arayanın olabilir kurtarmak için bazı verimli şekilde nereye kadar denetlenmeyen bir durum olurdu daha kurtarılamaz durumda, ama ben ilgileneceğin bir diğer düşünce.

CEVAP
27 EYLÜL 2013, Cuma


Kontrol özel Durumlar büyük, olması zaman anlarsın! Java çekirdek API kadar korkunç olduğunu SQLException (ve bazen IOException için) için bu kuralları takip etmek başarısız.

Kontrol Özel Durumlariçin kullanılmalıdırbeklendiğiamamuhakkak gelecektirhataları olduğunumakul kurtarmak için.

Denetlenmeyen İstisnalarher şey için kullanılmalıdır.

Çoğu kişi bu ne demek yanlış, çünkü bu senin için mola veririm.

  1. Beklenen ama muhakkak gelecektir: Arayan giriş parametreleri doğrulamak için gücü dahilinde her şeyi yaptı, ama kendi kontrolü dışında bazı durum, başarısız operasyon neden oldu. Örneğin, bir dosya okumaya çalışın ama eğer birisi varsa, kontrol zamanı ve okuma işlemi başlar zaman arasındaki siler. İşaretli bir durum ilan ederek, arayanın bu başarısızlık tahmin söylüyorsun.
  2. Makul kurtarmak için: Hiçbir anlamı arayanların kurtaramazlar özel durumlar önceden bilemez. Eğer bir kullanıcı mevcut olmayan bir dosyadan okumaya çalışırsa, arayan yeni bir dosya adı için onları isteyebilir. Eğer bu yöntem programlama bir hata (geçersiz yöntem bağımsız değişkenleri veya hatalı yöntem uygulama) nedeniyle başarısız olursa, diğer yandan, uygulamanın ortasında infaz sorunu çözmek için yapabileceği bir şey yok. Yapabildiği en iyi sorun günlük ve geliştirici, daha sonra bunu düzeltmek için beklemek.

Özel durum olmadığı sürece karşılar atıyortümyukarıdaki koşulları Denetlenmeyen bir İstisna kullanmalısınız.

Her düzeyde yeniden değerlendirmek: Yöntem kontrol istisnalarını hatayı işlemek için doğru yer değil bazen. Bu durumda, kendi arayanlar için makul olanı düşünün. Eğer durum öyleyse onları kurtarmak için beklenen, muhakkak gelecektir ve makul ise kontrol bir istisna Kendin atmalısın. Değilse, denetlenmeyen bir istisna dışında sarın. Eğer bu kural eğer denetlenmeyen istisnalar için kontrol istisnalar kendini dönüştürme ve tersi ne bağlı olarak bulacaksınız.

Her iki kontrol ve kontrolsüz durumlar içinsağ soyutlama düzeyi kullanın. Örneğin, iki farklı uygulamaları (veritabanı ve dosya sistemi) ile kod deposu SQLException IOException atarak uygulama-özel detaylar birakmayin. Bunun yerine, yayılan tüm uygulamaları bir soyutlama (örneğin RepositoryException) istisna sarın.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BMG Rentals Property Management

    BMG Rentals

    23 Mayıs 2011
  • Jeb Corliss

    Jeb Corliss

    17 Kasım 2006
  • William Sledd

    William Sled

    24 EYLÜL 2006