NullPointerException nedir ve nasıl önlenir?

NullPointerException, Java’da bir RuntimeException’dır. Daha doğrusu alt sınıflarından biridir. Ne kadar açıklayıcı oldu değil mi? Burada öncelikle RuntimeException nedir onu kısaca açıklamamız gerekmekte.

RuntimeException, Java Virtual Machine’nın normal operasyonlar yani çalışma sırasında gerçekleşen exception’lardır.

NullPointerExeption’a geri dönersek, Java’da bir object referansına null değerini atayabiliyoruz ve bir aplikasyon null değeri atanmış bir object referansını kullanmaya çalıştığı anda NullPointerExeption hatası ile karşılaşırız.

Hatanın oluştuğu durumları daha detaylı yazalım:

  • Null referanslı objectin bir fonksiyonda çağırılması durumunda,
  • Null referanslı bir objenin özelliklerini modifiye etmeye çalıştığımızda,
  • Null referanslı objectimizin tipi Array ise length fonksiyonu ile uzunluğunu bulmaya çalıştığımızda

NullPointerException hatası ile karşılaşırız.

Bu exception’ın neden ve hangi durumlarda ortaya çıktığını açıkladıktan sonra nasıl önleyebileceğimize geçelim.

 

1) Bir değişkeni bir string ile kıyaslama yaparken her zaman öncelikle kıyaslama yapılacak string’i önce yazmak daha sağlıklı olacaktır:

1
2
3
if (degisken.equals("string")) {
//yanlış yazımlı if içinde olanlar.
}

yerine şu şekilde kullanılmalıdır:

1
2
3
if ("string".equals(degisken)) {
//doğru yazımlı kıyaslamanın içi.
}

Eğer değişkenimiz null ise ilk örnekte NullPointerException hatası alırken, ikinci örnekte bu exception’ı almayız.

 

2) Null kelimesini değer atamalarında kullanmayı en aza indirmek NullPointerException almamızı azaltacaktır. Örneğin:

1
2
3
4
5
6
7
8
9
10
String degisken = null;
while (ifade) {
if (ifade1) {
degisken = "yeni değer";
}
}

if (degisken != null) {
degisken = "baska yeni değer";
}

gibi bir kod exception verme olasılığını artıracaktır. Bunun gibi bir kod yazmak gerektiğinde null değerini atamak yerine boolen bir değişken tanımlayıp onun true olduğu durumlarda değişkenimizi değiştirebiliriz. Bir diğer seçenek ise null atamak yerine, “” atamaktır. Yalnız boşluk atamak bazı durumlarda farklı buglar ortaya çıkaracağından NullPointerException daha iyi olabilir çünkü size hatayı bulmakta kolaylık sağlar. İkisinden de kaçınmak o yüzden çok daha iyidir.

 

3) Array oluştururken new Tip[int] syntax’ını kullanmayı minimalize etmek de exception almamızı azaltacaktır. Örneğin new Object[10] diye tanımladığımız bir Array bize 10 tane null pointer verecektir. Bunu istemediğimiz için Array’i tanımlarken doldurmak veya collection kullanmak daha iyi olacaktır:

1
Object[] objects = {"hop", 5, new Obj("...")};

 

NullPointerException’ın ne olduğunu ve nasıl kaçınılabileceğini açıklamaya çalıştım bugün dostlar, umarım yardımcı olur. Hatasız kodlar diliyorum.

ahmet

Ahmet Kılınç - Software Developer

Bunlar da hoşunuza gidebilir...

1 Cevap

  1. Mert Tuna dedi ki:

    Ellerine sağlık dostum

Mert Tuna için bir cevap yazın Cevabı iptal et

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.