Προγραμματισμός

* Γνώση Υπολογιστών >> Προγραμματισμός >> Προγραμματισμός Java

Τι είναι ένα Εξαίρεση Null Pointer

; Κάθε προγραμματιστής γράφει τελικά ένα πρόγραμμα που παράγει η « NullPointerExceptions " μήνυμα λάθους . Είναι ιδιαίτερα αινιγματικά σε όσους αρχίζουν τη σταδιοδρομία του προγραμματισμού τους με την εκμάθηση της Java , το οποίο δεν εκθέτει προγραμματιστές με την έννοια ενός δείκτη . Δείκτες
Η

Ένας δείκτης είναι ένας όρος επιστήμη των υπολογιστών για μια μεταβλητή που , αντί να κατέχουν ένα κομμάτι των πληροφοριών , κατέχει μια διεύθυνση όπου οι πληροφορίες μπορούν να βρεθούν στη μνήμη ενός υπολογιστή . Μπορείτε να φανταστείτε τη μεταβλητή ως ταμπέλα ότι "σημεία" όπου μπορούν να βρεθούν οι πληροφορίες . Σε γλώσσες όπως η C + + , ο προγραμματιστής πρέπει να κάνει μια σαφή επιλογή για το αν μια δεδομένη μεταβλητή θα κατέχει άμεσα τις πληροφορίες ή αντ 'αυτού θα κρατήσει ένα δείκτη με τις πληροφορίες και η επιλογή αυτή μπορεί να έχει μια βαθιά επίδραση στην αποδοτικότητα του προγράμματος . Για παράδειγμα , εάν μια δεδομένη τάξη κατέχει μερικά megabytes αξία των πληροφοριών που πρέπει να περάσει σε μια λειτουργία , είναι πολύ πιο αποτελεσματική για να δώσει την λειτουργία ενός δείκτη από το να αντιγράψετε άμεσα όλες τις πληροφορίες .

Java ανταλλακτικών προγραμματιστές αυτό το δίλημμα και τα σφάλματα που μπορεί να παράγει με την απόκρυψη δείκτες από τον προγραμματιστή .
εικόνων Null
Η

Null είναι ένας άλλος ειδικός όρος στην επιστήμη των υπολογιστών . Αναφέρεται σε μια μεταβλητή που περιέχει κυριολεκτικά καμία πληροφορία . Μέχρι κάποια στοιχεία που της έχουν ανατεθεί , λέγεται ότι είναι ίση με null . Για παράδειγμα , στον παρακάτω κώδικα :

String s ? S = new String ( ) ?

Μετά την πρώτη γραμμή έχει τελειώσει , " s " είναι ίση με μηδέν. Μετά τη δεύτερη γραμμή έχει τελειώσει , " s " είναι ίση με ένα κενό string .

Η Null Δείκτες
Η

Αν και Java προσπαθεί να κρύψει δείκτες από τον προγραμματιστή , υπάρχει μια περίπτωση , όταν δεν μπορεί να το κάνει . Όλα τα μαθήματα είναι στην πραγματικότητα δείκτες σε θέσεις μνήμης, όπου μπορείτε να βρείτε τα δεδομένα για την κατηγορία . Αυτό καθιστά πιο γρήγορα όταν τάξεις πρέπει να περάσει μέσα και έξω από τις λειτουργίες . Ωστόσο , στο παραπάνω παράδειγμα , μετά την πρώτη γραμμή τρέχει, ένας δείκτης έχει τεθεί κατά μέρος για το " s ", αλλά δεν υπάρχουν στοιχεία έχει δημιουργηθεί. "s" δεν έχει μνήμη που προορίζεται γι 'αυτό , γι' αυτό είναι ένα " null pointer . "
εικόνων Null Pointer Εξαιρέσεις
Η

Τώρα που ξέρετε τι ένα μηδενικό δείκτη είναι , να εξετάσει τις ακόλουθες δύο γραμμές κώδικα :

String s ?

ο κωδικός ζητά για τον πρώτο χαρακτήρα //Πάρτε τον πρώτο χαρακτήρα της συμβολοσειράς ? s.charAt ( 0 ) . ένα αντικείμενο string που απλά δεν υπάρχει . Με άλλα λόγια, ζητά το αδύνατο . Μόλις συμβεί αυτό , Java αντιλαμβάνεται το πρόβλημα και ρίχνει ένα « NullPointerException " να αφήσει ο χρήστης ή ο προγραμματιστής γνωρίζει ότι κάτι έχει πάει στραβά .
Εικόνων Παράδειγμα
Η

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

εκτύπωση δημόσια άκυρη ( String s ) { System.out.println ( s ) ? }

Αρχικά , αυτός ο κώδικας φαίνεται μια χαρά : η λειτουργία δέχεται ένα String από άλλα σημεία του προγράμματος και τυπώνει στην οθόνη . Ωστόσο , τι γίνεται αν το πρόσωπο που εκτελεί τη λειτουργία που αποστέλλονται είναι μια σειρά που δεν είχε προετοιμαστεί σωστά ; Μια NullPointerException θα πεταχτεί.
Εικόνων Debugging και Πρόληψη
Η

Το πρώτο βήμα για την πρόληψη NullPointerExceptions είναι η διασφάλιση ότι τα νέα αντικείμενα τάξη είναι πάντα προετοιμαστεί σωστά . Ωστόσο , κανείς δεν είναι τέλειος , έτσι ώστε το δεύτερο βήμα είναι να πάρει στη συνήθεια της εκτέλεσης αστυνόμευσης δεδομένων για τις λειτουργίες . Εισερχόμενα δεδομένα πρέπει πάντοτε να αντιμετωπίζονται ως αναξιόπιστος , έτσι ώστε η εξής τροποποίηση θα μπορούσε να γίνει :

εκτύπωσης public boolean ( String s ) { try { System.out.println ( s ) ? Return true ? //Αφήστε το υπόλοιπο . του προγράμματος γνωρίζουν η λειτουργία ήταν επιτυχής } αλιευμάτων ( NullPointerException ε) { επιστροφή ψευδείς? . //Αφήστε το υπόλοιπο του προγράμματος γνωρίζουν τη λειτουργία απέτυχε } }

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

Συναφής σύστασή

Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα