Πίνακας περιεχομένων:
Βίντεο: 33 Εισαγωγή στην Ανάπτυξη Εφαρμογών Java σε Android 1 2024
Είναι σημαντικό ο κώδικας Java να καταβάλει κάθε δυνατή προσπάθεια για να διορθώσει ένα πρόβλημα. Ωστόσο, υπάρχουν φορές που ο κωδικός σας απλά δεν έχει αρκετές πληροφορίες, πόρους, δικαιώματα ή κάποια άλλη απαίτηση για την επίλυση ενός προβλήματος.
Όταν συμβεί αυτό, ο κώδικας σας ρίχνει ένα σφάλμα χρησιμοποιώντας ένα αντικείμενο εξαίρεσης. Ο όρος εξαίρεση είναι κατάλληλος επειδή πρέπει να είναι η εξαίρεση από τον κανόνα και όχι η πρώτη πράξη που εκτελεί η εφαρμογή. Ωστόσο, οι εφαρμογές αντιμετωπίζουν σφάλματα που απαιτούν εξαιρετικά μέτρα και οι ακόλουθες ενότητες περιγράφουν τον τρόπο αντιμετώπισης τέτοιων καταστάσεων.
Σφάλματα ρίψης σε εξαιρετικές συνθήκες
Για πρακτική εφαρμογή, μπορείτε να δημιουργήσετε μια εφαρμογή που μπορεί να δημιουργήσει πολλαπλά είδη σφαλμάτων. Κανονικά, δεν θα πετάξετε κάποιο σφάλμα αν μια τιμή βρίσκεται σε λάθος εύρος - θα εμφανίζατε ένα μήνυμα απευθείας στον χρήστη. Ωστόσο, μπορείτε να δημιουργήσετε ένα παράδειγμα που δείχνει πώς να ρίχνετε και να πιάσετε ένα σφάλμα μέσα από μια μέθοδο.
Πέρασμα σφαλμάτων στον καλούντα
Πολλά παραδείγματα κώδικα με τα οποία αρχίζετε αρχίζουν να φτάνουν στο σημείο όπου καλείτε μεθόδους από το main (). Η κύρια μέθοδος () είναι πάντα το κορυφαίο επίπεδο της εφαρμογής σας. Καθώς ονομάζετε μεθόδους, οι μέθοδοι που καλείτε σχηματίζουν επιπλέον επίπεδα.
Για παράδειγμα, μια μέθοδος που καλείται από main () θα είναι στο δεύτερο επίπεδο της εφαρμογής σας. Εάν η μέθοδος αυτή έπρεπε να καλέσει άλλη μέθοδο, η μέθοδος θα ήταν στο τρίτο επίπεδο και ούτω καθεξής. Οι περισσότερες εφαρμογές αποτελούνται από πολλά επίπεδα κλήσεων.
Στην πραγματικότητα, όταν βλέπετε μια εξαίρεση στην οθόνη, εμφανίζει στην πραγματικότητα μια λίστα με τις μεθόδους που ονομάζουν την τρέχουσα μέθοδο σε μια μορφή που ονομάζεται στοίβα κλήσεων .
Η στοίβα κλήσεων είναι μια λίστα μεθόδων και η σειρά με την οποία καλούνται με άλλες μεθόδους. Η γνώση της στοίβας κλήσεων μπορεί να σας βοηθήσει να εντοπίσετε την πηγή δυνητικού σφάλματος όταν αυτό δεν συμβαίνει στο τρέχον επίπεδο της εφαρμογής.
Τα σφάλματα χειρισμού αποτελούν ουσιαστικό μέρος της καλής πρακτικής προγραμματισμού. Εάν θέλετε ισχυρές εφαρμογές που δεν συντρίβουν συνεχώς, θα πρέπει να παρέχετε καλό χειρισμό σφαλμάτων. Ωστόσο, η προσπάθεια αντιμετώπισης ενός σφάλματος όταν δεν έχετε αρκετές πληροφορίες για να χειριστείτε αυτό το σφάλμα είναι επίσης ένα πρόβλημα.
Όταν ο κώδικας επιχειρεί να διορθώσει ένα σφάλμα σε πολύ χαμηλό επίπεδο, αποκρύπτει το σφάλμα από ένα επίπεδο που θα μπορούσε ενδεχομένως να το διορθώσει. Ναι, θέλετε να διορθώσετε ένα σφάλμα στο χαμηλότερο δυνατό επίπεδο, αλλά όχι εις βάρος της παροχής μιας επισκευής που θα μπορούσε τελικά να καταλήξει να κρύβετε κάτι πιο σοβαρό.
Όταν διαπιστώσετε ότι ένα συγκεκριμένο επίπεδο μιας εφαρμογής δεν διαθέτει τους απαιτούμενους πόρους, πληροφορίες, δικαιώματα, πρόσβαση χρηστών ή κάποιο άλλο στοιχείο που χρειάζεται να χειριστεί ένα σφάλμα, τότε εκδίδετε μια εντολή ρίψης με το κατάλληλο αντικείμενο εξαίρεσης.Το προηγούμενο επίπεδο της εφαρμογής θα λάβει την εξαίρεση και θα προσδιορίσει αν μπορεί να το χειριστεί.
Ωστόσο, εάν η μέθοδος main () λαμβάνει την εξαίρεση, τότε πρέπει να καθορίσετε τι να κάνετε με το σφάλμα ή η εφαρμογή θα διακοπεί. Είναι γενικά θεωρείται κακή πρακτική προγραμματισμού για να αφήσετε απλά τη συντριβή της εφαρμογής - πρέπει να βρείτε κάποιο τρόπο αντιμετώπισης των σφαλμάτων που αντιμετωπίζει η εφαρμογή.
Απαιτούμενο χειρισμό σφαλμάτων
Η Java παρέχει δύο είδη εξαιρέσεων: ελέγχονται (εκείνες που παρακολουθούνται από το JRE) και μη ελεγμένες (αυτές που δεν παρακολουθούνται από το JRE). Έχετε την επιλογή να χειριστείτε μια μη ελεγμένη εξαίρεση. Ωστόσο, η Java σας αναγκάζει να χειριστείτε μια ελεγχόμενη εξαίρεση. Ο κώδικας δεν θα συγκεντρωθεί ακόμη και αν προσπαθήσετε να χρησιμοποιήσετε μια μέθοδο που έχει μια εξακριβωμένη εξαίρεση που σχετίζεται με αυτήν.
Μια εξακριβωμένη εξαίρεση είναι αυτή που λέγεται στο JRE από τον ορισμό της κλάσης για παρακολούθηση. Το JRE αναγκάζει τον χρήστη της κλάσης να παράσχει χειρισμό για την εξαίρεση για να εξασφαλίσει ότι η κλάση εκτελεί αξιόπιστα.
Όλα τα είδη περίεργων στοιχείων σχετίζονται με ελεγμένες και ανεξέλεγκτες εξαιρέσεις. Ένας εύκολος τρόπος να γνωρίζετε αν ελέγχεται μια εξαίρεση είναι να γνωρίζετε τη μητρική τάξη. Όλες οι εξαιρέσεις που είναι υποκατηγορίες από τις κλάσεις Error ή RuntimeException δεν έχουν επιλεγεί - όλες οι άλλες εξαιρέσεις ελέγχονται.
Η βέλτιστη πρακτική είναι να χειριστείτε κάθε εξαίρεση στην εφαρμογή σας και δεν θα πρέπει να ανησυχείτε αν ελέγχεται ή εξακριβώνεται εξαίρεση. Ένας μεγάλος προγραμματιστής αντιμετωπίζει πάντα πιθανά λάθη - αυτή είναι η κατώτατη γραμμή.