Java'da Null Pointer Exception: Neden Oluşur ve Nasıl Önlenir
Java geliştirici olarak en sık karşılaştığınız hatalardan biri NullPointerException (NPE). Bu hata, bir nesnenin null olduğunu kontrol etmeden ona erişmeye çalıştığınızda fırlatılır. Görünüşte basit ancak üretime geçmiş kodlarda ciddi sorunlar yaratabilir.
Neden Oluşur?
Java'da her referans değişken başlatılmadığında null değerine sahiptir. Bir method çağırdığınızda veya bir özelliğe eriştiğinizde, eğer o referans null ise NullPointerException fırlatılır.
1String metin = null;2int uzunluk = metin.length(); // NullPointerException!Klasik Çözüm: Null Kontrolleri
En temel yöntem, işlem yapmadan önce kontrol etmektir:
1String metin = null;2if (metin!= null) {3int uzunluk = metin.length();4System.out.println(uzunluk);5}Ancak iç içe kontroller kodunuzu okunaksız hale getirir (callback hell benzeri).
Modern Çözüm: Optional Sınıfı
Java 8+ ile gelen Optional, null değerleri daha zarif işler:
1String metin = null;2Optional.ofNullable(metin).ifPresentOrElse(3m -> System.out.println(m.length()),4() -> System.out.println("Metin boş")5);veya kısa versiyonu:
1int uzunluk = Optional.ofNullable(metin).map(String::length).orElse(0);Objects Yardımcı Sınıfı
Parametreleri validasyonda kullanışlıdır:
1public void ayarla(String deger) {2this.deger = Objects.requireNonNull(deger, "Değer null olamaz");3}İyi Pratikler
Method döndürürken null yerine boş koleksiyon, Optional veya varsayılan değer döndürün. Null, bir sorunun işareti olarak tasarlanmıştır; bunu ciddiye alın.
NPE'den kurtulmak için kodu yazarken "bu null olabilir mi?" sorusunu her zaman sorun. Böylece çalışma zamanında değil, geliştirme aşamasında sorunu çözersiniz.
0 yorum