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ı

Reklam · TEST
AdSense Test ReklamıYazı arası (gönderi içi) · Yazı arası

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.

Reklam · TEST
AdSense Test ReklamıGönderi altı · Görüntülü
konu hakkında tepkinizi verebilirsiniz