Pages

Friday, August 13, 2010

Java Common Mistakes - Null Pointer Exception

Πόσες ώρες μπορεί να έχω σπαταλήσει ψάχνοντας για τέτοιου τύπου λάθη;

Θα σας πω μερικά πράγματα για το κλασσικό σφάλμα του Null Pointer Exception για να σας σώσω από πολλές ώρες ψαξίματος και δυσανασχέτισης.

Όταν δηλώνουμε ένα αντικείμενο, στην ουσία δημιουργούμε ένα δείκτη στο αντικείμενο αυτό.

Integer myNumber;
myNumber = new Integer(12);

Στη πρώτη γραμμή κώδικα δημιουργούμε ένα δείκτη, ο οποίος όμως προς το παρόν "δείχνει" στο πουθενά, η αλλιώς null.

Στη δεύτερη γραμμή με χρήση του τελεστή new δημιουργούμε ένα αντικείμενο τύπου In teger και θέτουμε το δείκτη myNumber σε αυτό.


Πώς λοιπόν δημιουργείται αυτή η exception; 
Αυτό γίνεται όταν δημιουργήσουμε ένα δείκτη αλλά δε τον θέσουμε σε κάποιο αντικείμενο και τον αφήσουμε να "δείχνει" στο κενό ή με λίγα λόγια αν από το παραπάνω παράδειγμα παραλείπαμε τη δεύτερη γραμμή κώδικα. Αν τώρα προσπαθήσουμε να χρησιμοποιήσουμε με κάποιο τρόπο τη μεταβλητή μας, το πρόγραμμα θα crashάρει και θα μας πετάξει το άκρως αντιπαθητικό μήνυμα - Null Pointer Exception.


Κάτι που θα μας πετούσε Null Pointer Exception :


String myString;
String mySecondString = "";

InputStreamReader input = new InputStreamReader(System.in);
BufferedReader in = new BufferedReader(input);


if (myString.equalsIgnoreCase(mySecondString)) {
   //do something - NULL POINTER EXCEPTION
}

Σε αυτή τη περίπτωση, όταν το πρόγραμμα θα έφτανε στην if - statement θα crashαρε λόγω του ότι το myString είναι null.

No comments:

Post a Comment