ΖΩΗ

Το try-catch-τελικά Blocks στην Java

Το try-catch-τελικά Blocks στην Java

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

Η δοκιμή Block

ο

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

FileReaderτάξη, αναμένεται να χειριστείτε το

IOExceptionsπου σχετίζονται με τη χρήση ενός

FileReaderαντικείμενο, για παράδειγμα,

FileNotFoundExceptionκαι

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

FileReaderαντικείμενο μέσα στο

προσπαθήστεblock: Ωστόσο, ο κώδικας είναι ελλιπής, διότι, για να γίνει η εξαίρεση, πρέπει να έχουμε ένα μέρος για να το πιάσουμε. Αυτό συμβαίνει στο

Μπλοκ αλίευσης

ο

σύλληψημπλοκ (ες) παρέχουν μια θέση για να χειριστεί την εξαίρεση που ρίχνεται από τις δηλώσεις μέσα σε ένα

προσπαθήστεΟΙΚΟΔΟΜΙΚΟ ΤΕΤΡΑΓΩΝΟ. ο

σύλληψηΤο μπλοκ ορίζεται αμέσως μετά το

προσπαθήστεΟΙΚΟΔΟΜΙΚΟ ΤΕΤΡΑΓΩΝΟ. Πρέπει να καθορίζει τον τύπο εξαίρεσης που χειρίζεται. Για παράδειγμα, το

FileReaderτο αντικείμενο που ορίζεται στον παραπάνω κώδικα είναι ικανό να ρίξει ένα

FileNotFoundExceptionή ένα

IOException. Μπορούμε να καθορίσουμε δύο

σύλληψημπλοκ για να χειριστεί και τις δύο εξαιρέσεις: Στο

FileNotFoundExceptioncatchμπλοκ μπορούμε να τοποθετήσουμε κώδικα για να ζητήσουμε από το χρήστη να βρει το αρχείο για εμάς και στη συνέχεια να προσπαθήσουμε να διαβάσουμε ξανά το αρχείο. Στο

IOExceptionμπλοκ catch, ίσως απλά να περάσουμε το σφάλμα I / O στο χρήστη και να του ζητήσουμε να δοκιμάσει κάτι άλλο. Είτε έτσι είτε αλλιώς, έχουμε δώσει έναν τρόπο για το πρόγραμμα να πάρει μια εξαίρεση και να το χειριστεί με ελεγχόμενο τρόπο.
Στην Java SE 7, κατέστη δυνατή η διαχείριση πολλαπλών εξαιρέσεων σε μία

σύλληψηΟΙΚΟΔΟΜΙΚΟ ΤΕΤΡΑΓΩΝΟ. Αν ο κώδικας θέλαμε να τοποθετήσουμε στα δύο

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

Το τελικό Block

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

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