Hoşgeldin Misafir

Java NullPointerException Hatası Nedir? Nasıl Çözülür?

hakantopuzoglu

25 May 2018
2,223 Mesaj
TIM Görevleri
1

Aktiflik

Seviye

Deneyim

TIM / GÖREV:
Java NullPointerException Hatası Nedir? Nasıl Çözülür?

Herkese Merhaba,
Java geliştiricilerinin en sık karşılaştığı hatalardan biri kesinlikle
NullPointerException hatasıdır.

Özellikle yeni başlayanlar için bazen sinir bozucu olabilir çünkü uygulama
bir anda durur ve terminalde uzun bir hata çıktısı bırakır.

Ama aslında mantığını anladığınızda çözmesi oldukça kolaydır.
Bu yazıda NullPointerException hatasının neden oluştuğunu,
nasıl tespit edildiğini ve profesyonel şekilde nasıl çözüldüğünü konuşacağız.


HBvAHGH.png


NullPointerException Nedir?

Java’da bir nesne oluşturulmadan kullanılmaya çalışılırsa
NullPointerException oluşur.

Yani:
Bir değişken vardır ama bellekte gerçek bir nesneyi işaret etmiyordur.

Örnek:


String name = null;
System.out.println(name.length());


Burada:
name değişkeni bir String nesnesine bağlı değil.
Ama biz ondan işlem yapmasını istiyoruz.

Sonuç:
NullPointerException

Bu Hata Neden Oluşur?


En yaygın sebepler:

- Null nesne üzerinden metot çağırmak
- Diziler veya listeler boşken erişmeye çalışmak
- Veritabanından null veri dönmesi
- API response’unun boş gelmesi
- Dependency Injection hataları
- Yanlış object initialization

Kısacası:
“Nesne yok ama varmış gibi davranılıyor.”

En Basit Çözüm — Null Kontrolü


En temel yöntem:
nesneyi kullanmadan önce kontrol etmek.

Örnek:


if(name != null) {
System.out.println(name.length());
}


Bu kontrol sayesinde uygulama çökmez.


Modern Çözüm — Optional Kullanımı


Java 8 sonrası gelen
Optional
Null yönetimini çok daha temiz hale getirir.

Örnek:


Optional<String> name = Optional.ofNullable(getName());

name.ifPresent(System.out::println);


Avantajları:
- Daha okunabilir kod
- Daha güvenli akış
- Daha az crash

String Karşılaştırırken Yapılan Büyük Hata


Yanlış kullanım:


if(name.equals("admin"))


Eğer name null ise sistem direkt çöker.

Doğru kullanım:


if("admin".equals(name))


Çünkü:
String sabiti null olmaz.

Bu küçük detay çok önemlidir.

List ve Array Kullanırken Dikkat


Örnek hata:


List<String> users = null;

users.add("Hakan");


Liste oluşturulmadığı için hata alınır.

Doğru kullanım:


List<String> users = new ArrayList<>();


Her collection mutlaka initialize edilmeli.


Spring Boot Tarafında NullPointerException


Spring projelerinde genelde sebep:
Dependency Injection eksikliği

Yanlış:


UserService service;

service.save();


Doğru:


@Autowired
private UserService service;


Ya da constructor injection kullanılmalı.

IDE Yardımı Kullan


Modern IDE’ler:
- IntelliJ IDEA
- Eclipse
- VS Code

Null olabilecek yerleri önceden gösterebilir.

Özellikle:
@Nullable
ve
@NotNull
annotation’ları çok işe yarar.

Profesyonel Yaklaşım


Kurumsal projelerde amaç:
Null oluşmasını engellemek

Bunun için:
- Constructor validation
- DTO kontrolü
- Optional kullanımı
- Defensive programming
- Validation katmanı

uygulanır.

İyi yazılmış Java projelerinde NullPointerException oranı oldukça düşüktür.

Sonuç olarak,


NullPointerException,
Java dünyasının en klasik hatası olsa da
doğru alışkanlıklarla kolayca kontrol altına alınabilir.

Önemli olan:
“Null olabilir mi?” sorusunu kod yazarken sürekli düşünmek.

Unutma:
Sağlam yazılım, sadece çalışan yazılım değil; hata anında da ayakta kalabilen yazılımdır.

Sorularınız olursa yorumlarda konuşuruz dostlar 🤝




LOJİSTİK TİM SUNDU

btn1pyf.png