ΥπολογιστέςΠρογραμματισμός

Java: εξαιρέσεις και χειρισμός τους

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

Όταν μπορεί να χρειαστεί χειρισμό εξαίρεση

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

Χειρισμός Java εξαιρέσεις

Τι να εξετάσει; Η γλώσσα Java έχει τη δική του λειτουργικότητα ενσωματωμένη στο χειρισμό εξαίρεση της. Φυσικά, ένα μεγάλο ποσοστό των σφαλμάτων πιάνεται από ένα άλλο στάδιο σύνταξης, το σύστημα θα ενημερώνει αυτόματα ότι η χρήση δεν είναι πλέον δυνατή. Αλλά υπάρχει αυτού του είδους η εξαίρεση που εμφανίζεται κατά το χρόνο εκτέλεσης. Ο κύριος του έργου θα πρέπει να είναι σε θέση να προβλέψει και να σχεδιάσει τον κώδικα έτσι ώστε να μην προκάλεσε ένα σφάλμα, και ο χειρισμός σε ένα ιδιαίτερο τρόπο και παρέδωσε τον έλεγχο σε άλλο κλάδο.

Στην Java, αυτό επιβάλλεται από τον compiler για να πιάσει μια εξαίρεση, έτσι ώστε τα τυπικά προβλήματα είναι γνωστά και έχουν ένα πρότυπο σχέδια της άσκησης.

τυπικό αποκλεισμούς

Το πιο απλό παράδειγμα, στο οποίο μπορείτε να πάρετε μια εξαίρεση - αυτό το τμήμα. Παρά την απλότητά του, από την άποψη, ως διαχωριστικό, μπορεί να είναι μηδέν, η οποία θα οδηγήσει σε ένα σφάλμα. Λοιπόν, αν είναι δυνατόν να προβλέψει την εμφάνιση του παρελθόντος και την πρόληψη. Αλλά αυτή η επιλογή δεν είναι πάντα διαθέσιμα, έτσι ώστε να πιάσει την εξαίρεση θα πρέπει να οργανωθεί άμεσα στην περίπτωση του «διαίρει από το μηδέν».

Ο μηχανισμός Java για την παρακολούθηση σφαλμάτων επεξεργασίας μοιάζει με αυτό:

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

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

εάν (α null ==)

ρίξει νέο NullPointerException ()?

Εδώ, η μεταβλητή a είναι ελέγχεται κατά την εκκίνηση, δηλαδή, δεν είναι αν η αναφορά σε μηδενική αντικείμενο. Εάν η κατάσταση αυτή έχει προκύψει και χρειάζονται ειδικό χειρισμό, μια εξαίρεση από ρίψη νέα NullPointerException ().

Λίγες λεπτομέρειες σχετικά με τις λέξεις-κλειδιά

Όταν ασχολούμαστε με τις εξαιρέσεις είναι συχνά απαραίτητο να χρησιμοποιήσετε τη λέξη-κλειδί Java για να αναφερθώ σε μια συγκεκριμένη δράση. Αυτή η γλώσσα προγραμματισμού τους πέντε:

  • Δοκιμάστε το. Αυτή η λέξη-κλειδί είναι ήδη εκπληρώσει, και αυτό σημαίνει μια μετάβαση σε ένα τμήμα του κώδικα που μπορεί να ρίξει μια εξαίρεση. Αποκλεισμός περιορισμένη άγκιστρα {}.
  • Αλιευμάτων. Είναι διακόπτει τον επιθυμητό τύπο εξαίρεση και χειρίζονται κατάλληλα.
  • Τέλος. Αυτή η λέξη-κλειδί είναι προαιρετική και χρησιμοποιείται για να εκτελέσει ένα συγκεκριμένο κομμάτι του κώδικα, η οποία είναι απαραίτητη ούτως ή άλλως, ακόμη και αν δεν αποτελεί εξαίρεση, δεν πιάνεται. Προστέθηκε αμέσως μετά το μπλοκ try.
  • Πέτα - σας επιτρέπει να δημιουργήσετε Java εξαιρέσεις από οπουδήποτε.
  • Ριχτάρια - μια λέξη-κλειδί που τοποθετείται στη μέθοδο της υπογραφής. Αυτό σημαίνει ότι ο κώδικας που ακολουθεί μπορεί να ρίξει μια εξαίρεση αυτού του τύπου Java. Το σήμα αυτό χρησιμεύει ως ένα σήμα για τους προγραμματιστές που πρέπει να ληφθεί υπόψη - η μέθοδος δεν μπορεί να λειτουργήσει όπως αναμένεται από αυτόν.

Η κάλυψη με μια δοκιμή

Απελευθέρωση των εξαιρέσεων Java, φυσικά προϋποθέτει ότι θα πρέπει να αντιμετωπίζονται με ιδιαίτερο τρόπο. Ο πιο βολικός τρόπος για να το κάνει, αν το τμήμα κώδικα είναι περιφραγμένη σε ένα μπλοκ. Που μπορεί να περιέχει μια εξαίρεση. Όταν εκτελέσετε αυτόν τον κώδικα, η εικονική μηχανή θα βρείτε μια απροσδόκητη κατάσταση, να κατανοήσουν ότι υπάρχει ένα κρίσιμο τετράγωνο και μεταφέρει τον έλεγχο στο σταθμό με την επεξεργασία.

Ο κώδικας Java είναι τυλιγμένο σε μια ειδική δοκιμή μπλοκ, εντός του οποίου μπορεί να αποτελεί εξαίρεση. Έτσι, τοποθέτησε πολλές απρόβλεπτες καταστάσεις που μπορεί να αλιευθεί στην ίδια θέση, δεν raspolzayas κώδικα.

Το πιο χαρακτηριστικό κωδικό στη μονάδα επεξεργασίας έχει ως εξής:

δοκιμάστε {

// Εδώ είναι ένα τμήμα κώδικα που μπορεί να δημιουργήσει μια εξαίρεση

} Catch (identifikator_1 Tip_isklyucheniya_1) {

// Εδώ υπάρχει το χειρισμό εξαίρεση, ανάλογα με το είδος και τις συνθήκες του?

} Catch (identifikator_2 Tip_isklyucheniya_2) {

// Εδώ υπάρχει το χειρισμό εξαίρεση, ανάλογα με το είδος και τις συνθήκες του?

}

Λέξη-κλειδί για αλιεύματα αναφέρει ότι κώδικα, και το σαρώσετε μια εξαίρεση, πρέπει να αντιμετωπίζονται ως περιγράφεται κατωτέρω, υπό την προϋπόθεση ότι συμμορφώνεται με τον τύπο του. Το αναγνωριστικό μπορεί να χρησιμοποιηθεί στην επεξεργασία του μπλοκ κώδικα ως επιχειρήματα.

τελικά

Όπως έγινε σαφές από το προηγούμενο κεφάλαιο, μπλοκ αλιεύματα εξαιρέσεις και την επεξεργασία τους. Αλλά πολύ συχνά η κατάσταση προκύπτει όταν πρέπει να τρέξει κάποιο κώδικα, ανεξάρτητα από το αν πιάστηκαν λάθη. Γι 'αυτό υπάρχει η λέξη-κλειδί τελικά. Χρησιμοποιείται για να αυξήσει τις τιμές των διαφόρων μετρητές, κλείνοντας αρχεία ή συνδέσεις δικτύου.

Το οικόπεδο αυτό παρουσιάζει αρκετά τετράγωνα αλιευμάτων εφεύρει μεθόδους πιάσει εξαιρέσεις. Για παράδειγμα, ο κώδικας που περιέχεται στην προσπάθεια δημιουργεί μια απρόσμενη κατάσταση όπως Ψυχρός. Στη συνέχεια, η κονσόλα θα εμφανιστεί η έκφραση «Παγιδευμένη κρύο!» Και «Είναι αυτό κάτι για να πανηγυρίσουν;». Δηλαδή, το τέλος μπλοκ εκτελείται σε κάθε περίπτωση.

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

Πέτα λέξη-κλειδί

Πέτα δημιουργεί μια εξαίρεση. Η σύνταξή της είναι ως εξής:

ρίξει νέο NewException ()?

Υπάρχει δημιούργησε μια νέα εξαίρεση από την NewException τύπο (). Ως ένα είδος μπορεί να χρησιμοποιηθεί ήδη περιλαμβάνεται στις βασικές κατηγορίες της βιβλιοθήκης της Java και ορίστηκε προηγουμένως από τον κύριο του έργου της δικής της παραγωγής.

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

Λέξη-κλειδί ρίχνει

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

Αυτή η ετικέτα είναι ένα είδος δείκτη για τους προγραμματιστές πελάτη ότι η μέθοδος δεν είναι σε θέση να χειριστεί ίδια εξαίρεση τους. Επιπλέον, εάν ο τύπος σφάλματος είναι επιλεγμένο, τότε ο compiler θα αναγκάσει ρητά ζητήσει.

Προσπαθήστε να τους πόρους

Οι έκδοση Java 7 προγραμματιστές έχουν συμπεριλάβει μια σημαντική καινοτομία, όπως ένα μπλοκ try θεραπεία με πόρους.

Πολλά αντικείμενα που δημιουργούνται σε Java, μετά τη χρήση τους θα πρέπει να κλείσει τη διατήρηση των πόρων. Προηγουμένως έπρεπε να το λάβουν αυτό υπόψη και να σταματήσει αυτές τις περιπτώσεις το χέρι. Τώρα, όμως, εμφανίστηκαν AutoClosable περιβάλλον. Βοηθά να κλείσει αυτόματα ήδη χρησιμοποιούνται αντικείμενα τοποθετούνται σε ένα μπλοκ try. Μέσω αυτής της προσέγγισης έχει γίνει πιο βολικό να γράψουν κώδικα σε αναγνωσιμότητα του αυξάνεται σημαντικά.

Ίδια κλάσεις Java εξαιρέσεις

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

Ο πιο απλός τρόπος για να δημιουργήσετε - να κληρονομήσει από τον πιο κατάλληλο για το πλαίσιο αντικειμένου.

συνέβη εκεί για να κληρονομήσουν από Εξαίρεση, την τάξη που χρησιμοποιείται για να καθορίσει τη δική σας εξαιρέσεις. Σε MyException έχει δύο κατασκευαστές - μια προεπιλογή, η δεύτερη - με το String επιχείρημα τύπου msg.

Στη συνέχεια, στο FullConstructors δημόσια τάξη εφαρμοστεί η μέθοδος f, η οποία περιλαμβάνει την υπογραφή ρίχνει MyException. Αυτή η λέξη-κλειδί σημαίνει ότι η f μπορεί να ρίξει όπως Java MyException εξαίρεση. Περαιτέρω, στο σώμα μέθοδο παραγωγής κειμένου πληροφοριών έξοδο στην ίδια την κονσόλα και την πραγματική MyException γενιά, από απόσταση.

Η δεύτερη μέθοδος είναι ελαφρώς διαφορετική από την πρώτη, όταν δημιουργείτε μια εξαίρεση, που περνά μια παράμετρος string, το οποίο θα πρέπει να αντικατοπτρίζεται στην κονσόλα στη σύλληψη. Στο κύριο είναι σαφές ότι f () και g () τοποθετούνται σε έλεγχο δοκιμή και λέξη-κλειδί αλιευμάτων ρυθμιστεί για να συλλάβει MyException. Το αποτέλεσμα της επεξεργασίας είναι να εμφανίσει ένα μήνυμα σφάλματος στην κονσόλα:

Έτσι, ήρθε να προστεθεί Java εξαιρέσεις, από το δικό του χέρι.

εξαιρέσεις αρχιτεκτονική

Όπως συμβαίνει με όλα τα αντικείμενα σε Java, οι εξαιρέσεις είναι επίσης κληρονόμησε και έχει μια ιεραρχική δομή. Το στοιχείο ρίζα όλων των σφαλμάτων που ρίχνονται σε αυτή τη γλώσσα προγραμματισμού είναι η τάξη java.lang.Throwable. Κληρονόμησε από τον δύο είδη - λάθους και εξαίρεσης.

Σφάλμα - σηματοδοτεί το κρίσιμο σφάλμα και είναι ανεξέλεγκτη εξαιρέσεις Java. Δημιουργικότητα και την επεξεργασία των δεδομένων αυτών στις περισσότερες περιπτώσεις συμβαίνει στο στάδιο του σχεδιασμού και δεν έχουν ανάγκη από την εισαγωγή στο τελικό κώδικα της εφαρμογής.

Η πιο συχνά χρησιμοποιούμενη κατηγορία για τη δημιουργία και την ανάλυση των εξαιρέσεων είναι Εξαίρεση. Η οποία, με τη σειρά του, χωρίζεται σε πολλούς κλάδους, συμπεριλαμβανομένων RuntimeException. Με RuntimeException είναι runtime εξαιρέσεις, δηλαδή, που συμβαίνουν κατά τη διάρκεια του προγράμματος. Όλα τα μαθήματα που προέρχεται από αυτό είναι ανεξέλεγκτη.

Συχνά υπάρχουν και εξαιρέσεις

Στην εξαιρέσεις Java, ο κατάλογος των οποίων παρουσιάζεται παρακάτω, χρησιμοποιούνται πιο συχνά, οπότε θα πρέπει να περιγράφει το καθένα από αυτά αναλυτικά:

  • ArithmeticException. Αυτά περιλαμβάνουν τα σφάλματα που σχετίζονται με αριθμητικές πράξεις. Το πιο κραυγαλέο παράδειγμα - η διαίρεση με το μηδέν.
  • ArrayIndexOutOfBoundsException - μια έκκληση προς τον αριθμό στοιχείο του πίνακα που υπερβαίνει το συνολικό του μήκους του.
  • ArrayStoreException - προσπάθεια να εκχωρήσετε ένα μη συμβατό τύπο στοιχείου του πίνακα.
  • ClassCastException - μια προσπάθεια να φέρει το λάθος το ένα είδος στο άλλο.
  • IllegalArgumentException - χρησιμοποιώντας το λάθος επιχείρημα στην πρόσκληση μέθοδο.
  • NegativeArraySizeException - μια εξαίρεση όταν δημιουργείτε μια σειρά από αρνητικές μεγέθους.
  • NullPointerException - κατάχρηση αναφορές σε null.
  • NumberFormatException - συμβαίνει όταν μια λανθασμένη μετατροπή συμβολοσειράς σε ακέραιο.
  • UnsupportedOperationException - η λειτουργία δεν υποστηρίζεται.

Τα παραδείγματα αυτά αντιπροσωπεύουν τους τύπους ανεξέλεγκτη εξαιρέσεις Java. Αλλά το ίδιο βλέμμα που ελέγχθηκαν:

  • ClassNotFoundException - Class δεν βρέθηκε.
  • IllegalAcccessException - περιορίζουν την πρόσβαση στην τάξη.
  • InterruptedException - διακοπή της ροής.
  • NoSuchFieldException - δεν υπάρχουν υποχρεωτικό πεδίο.

Η ερμηνεία των εξαιρέσεων

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

NullPointerException. Η πρώτη περίπτωση, όταν υπάρχει μια εξαίρεση, είναι να προσελκύσει αναφορά σε ένα αντικείμενο που είναι ίση με null. Επεκτείνεται επίσης στις μηδέν μεθόδους τάξη παράδειγμα. NullPointerException μπορούν να ρίχνονται στην περίπτωση της λήψης ενός null συστοιχία ίσο μήκος. Για να αποφευχθούν τέτοιες καταστάσεις θα ελέγχει περιοδικά sites στο μηδέν.

ArrayIndexOutOfBoundsException. Κάθε πρόγραμμα δεν μπορεί να υπάρξει χωρίς τη χρήση των συστοιχιών. Κατά συνέπεια, η συχνή προσφυγή στο σύστημα αυτό μπορεί να δημιουργήσει και το λάθος. Εξαίρεση συμβαίνει όταν ένας προγραμματιστής προσπαθεί να αποκτήσει πρόσβαση σε ένα στοιχείο του πίνακα που δεν είναι στη λίστα του δείκτη. Για παράδειγμα, η τιμή που ζητείται είναι πάνω ή κάτω από το μηδέν μήκος. Πολύ συχνά είναι αποτέλεσμα του γεγονότος ότι στη διάταξη ξεκινά με σκορ μηδέν.

ευρήματα

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

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

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

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 el.delachieve.com. Theme powered by WordPress.