SORU
6 AĞUSTOS 2008, ÇARŞAMBA


Boş parametre için sınıftır ya da NullPointerException?

Bir özellik için basit bir ayarlayıcı yöntemi var ve null bu özel mülk için uygun değildir. Her zaman bu durumda yırtık olmuştur: IllegalArgumentException NullPointerException a atabilir miyim acaba? Bu javadocs, hem de uygun görünüyor. Anlaşılır bir standart falan mı var? Ya bu tercih hem çok doğru ne olursa olsun yapmanız gereken şeylerden biri mi?

CEVAP
6 EYLÜL 2008, CUMARTESİ


IllegalArgumentException (IAE), NullPointerException (NPE) aşağıdaki sebeplerden dolayı değil kullanıyor olması gerekir:

İlk NPE JavaDoc NPE uygun olduğu açıkça durumlarda listeler. Hepsi atılır dikkat edin . ben^>çalışma zamanı tarafındannull uygunsuz bir şekilde kullanıldığında. Buna karşılık, IAE JavaDoc daha açık olamazdı: "bir yöntem yasadışı veya uygunsuz bir tartışma geçti." olduğunu belirtmek için Atılan Evet, bu sensin!

Bir bir NPE yığın izleme gördüğünüz zaman, farz nedir? ikinci Muhtemelen biri null bir başvuru yapıldı. IAE gördüğünde üstündeki yöntemi arayan geçersiz bir değer geçirilen yığını olduğunu varsayın. Yine, ikinci varsayım doğruysa, eski yanıltıcıdır.

IAE açıkça parametreleri doğrulamak için tasarlanmış olduğundan, üçüncü, istisna varsayılan seçenek olarak kabul etmek zorundasın, o zaman neden NPE yerine seçerdiniz? İçin kesinlikle farklı bir davranış gerçekten kod NPE var IAE ayrı olarak yakalamak ve bir şey bir sonucu olarak farklı yapmak için çağrı bekliyor musunuz? Daha açık bir hata mesajı iletişim kurmak için çalışıyorsun? Ama tüm diğer hatalı parametreler için özel durum iletisi olarak gerektiği gibi metin her neyse, bunu yapabilirsiniz.

Diğer yanlış parametre veri IAE olacak, neden tutarlı değil? dördüncü Neden null bir yasadışı yasadışı tartışmalar tüm diğer türlerden ayrı bir durum bunu hak edecek kadar özel olduğunu mu?

Son olarak, Java API parçaları bu şekilde NPE kullanan bağımsız diğer cevaplar verdiği kabul ediyorum. Ancak, Java API ile tutarsız her şeyden istisna türleri için adlandırma kuralları, bu yüzden bence sadece körü körüne kopyalama (en sevdiğim kısım) Java API değil yeterince iyi bir argüman için koz bu diğer hususlar.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • CasinoRoyaleMovie's channel

    CasinoRoyale

    1 AĞUSTOS 2006
  • michellefeng's channel

    michellefeng

    26 Kasım 2006
  • YEAH1TV

    YEAH1TV

    19 ŞUBAT 2009