Δοκιμάστε το Catch in Java: Exception Handling παράδειγμα

Πίνακας περιεχομένων:

Anonim

Τι είναι η εξαίρεση στην Java;

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

Σε αυτό το σεμινάριο, θα μάθετε-

  • Τι είναι η εξαίρεση;
  • Γιατί χρειαζόμαστε εξαίρεση;
  • Πώς να χειριστείτε την εξαίρεση
  • Δοκιμάστε το Catch Block
  • Ιεραρχία τάξης εξαίρεσης Java
  • Τελικά μπλοκ Java

Υπάρχουν δύο τύποι σφαλμάτων:

  1. Συγκέντρωση σφαλμάτων χρόνου
  2. Σφάλματα χρόνου εκτέλεσης

Τα σφάλματα χρόνου συλλογής μπορούν να ταξινομηθούν ξανά σε δύο τύπους:

  • Σφάλματα σύνταξης
  • Σημασιολογικά σφάλματα

Παράδειγμα σφαλμάτων σύνταξης:

Αντί να δηλώσει

int a;το δηλώσατε εσφαλμένα ως in a;προς το ποιος μεταγλωττιστής θα ρίξει ένα σφάλμα.

Παράδειγμα: Δηλώσατε μια μεταβλητή

int a;και μετά από ορισμένες γραμμές κώδικα δηλώνετε ξανά έναν ακέραιο ως int a;. Όλα αυτά τα σφάλματα επισημαίνονται κατά τη σύνταξη του κώδικα.

Παράδειγμα σφαλμάτων χρόνου εκτέλεσης

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

Παράδειγμα εξαιρέσεων είναι, αριθμητική εξαίρεση, εξαίρεση Nullpointer, διαίρεση με μηδενική εξαίρεση κ.λπ.

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

Κάντε κλικ εδώ εάν το βίντεο δεν είναι προσβάσιμο

Γιατί χρειαζόμαστε εξαίρεση;

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

Κατά τη διάρκεια της πραγματικής παραγωγής, ο διακομιστής είναι εκτός λειτουργίας. Όταν το πρόγραμμά σας προσπάθησε να αποκτήσει πρόσβαση σε αυτό, δημιουργείται μια εξαίρεση.

Πώς να χειριστείτε την εξαίρεση

Μέχρι στιγμής έχουμε δει, η εξαίρεση είναι πέρα ​​από τον έλεγχο του προγραμματιστή. Όμως, η ευθύνη για την αποτυχία του κώδικα σε περιβαλλοντικά θέματα δεν είναι λύση. Χρειάζεστε έναν ισχυρό προγραμματισμό, ο οποίος φροντίζει εξαιρετικές καταστάσεις. Ένας τέτοιος κωδικός είναι γνωστός ως Exception Handler.

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

Για να το εφαρμόσετε, εισαγάγετε τον κωδικό σας για να συνδεθείτε στον διακομιστή (Χρησιμοποιώντας παραδοσιακές συνθήκες αν και αλλιώς).

Θα ελέγξετε εάν ο διακομιστής είναι εκτός λειτουργίας. Εάν ναι, γράψτε τον κωδικό για να συνδεθείτε στον εφεδρικό διακομιστή.

Αυτή η οργάνωση κώδικα, χρησιμοποιώντας το "if" και το "else" loop δεν είναι αποτελεσματική όταν ο κώδικάς σας έχει πολλές εξαιρέσεις java για χειρισμό.

class connect{if(Server Up){// code to connect to server}else{// code to connect to BACKUP server}}

Δοκιμάστε το Catch Block

Η Java παρέχει έναν ενσωματωμένο εξαιρετικό χειρισμό.

  1. Ο κανονικός κώδικας μπαίνει σε ένα μπλοκ TRY .
  2. Ο κωδικός χειρισμού εξαιρέσεων πηγαίνει στο μπλοκ CATCH

Στο παράδειγμά μας, το μπλοκ TRY θα περιέχει τον κωδικό για σύνδεση στον διακομιστή. Το μπλοκ CATCH θα περιέχει τον κωδικό για σύνδεση στον εφεδρικό διακομιστή.

Σε περίπτωση που ο διακομιστής είναι ενεργοποιημένος, ο κωδικός στο μπλοκ CATCH θα αγνοηθεί. Σε περίπτωση που ο διακομιστής είναι εκτός λειτουργίας, εμφανίζεται μια εξαίρεση και θα εκτελεστεί ο κωδικός στο catch block.

Έτσι, έτσι αντιμετωπίζεται η εξαίρεση στην Java.

Σύνταξη για τη χρήση του try & catch

try{statement(s)}catch (exceptiontype name){statement(s)}

Παράδειγμα

Βήμα 1) Αντιγράψτε τον ακόλουθο κώδικα σε πρόγραμμα επεξεργασίας

class JavaException {public static void main(String args[]){int d = 0;int n = 20;int fraction = n/d;System.out.println("End Of Main");}}

Βήμα 2) Αποθηκεύστε το αρχείο και μεταγλωττίστε τον κωδικό. Εκτελέστε το πρόγραμμα χρησιμοποιώντας την εντολή, Java JavaException

Βήμα 3) Μια αριθμητική εξαίρεση - διαιρείται με μηδέν όπως φαίνεται παρακάτω για τη γραμμή # 5 και η γραμμή # 6 δεν εκτελείται ποτέ

Βήμα 4) Τώρα ας δούμε πώς θα προσπαθήσουμε να πιάσουμε αυτήν την εξαίρεση. Θα θέσουμε την εξαίρεση προκαλώντας τη γραμμή κώδικα σε ένα μπλοκ δοκιμής , ακολουθούμενο από ένα μπλοκ catch . Αντιγράψτε τον ακόλουθο κώδικα στον επεξεργαστή.

class JavaException {public static void main(String args[]) {int d = 0;int n = 20;try {int fraction = n / d;System.out.println("This line will not be Executed");} catch (ArithmeticException e) {System.out.println("In the catch Block due to Exception = " + e);}System.out.println("End Of Main");}}

Βήμα 5) Αποθήκευση, μεταγλώττιση και εκτέλεση του κώδικα. Θα λάβετε την ακόλουθη έξοδο

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

Σημείωση: Το αντικείμενο AritmeticException "e" περιέχει πληροφορίες σχετικά με την εξαίρεση που έχει συμβεί και μπορεί να είναι χρήσιμη για τη λήψη ενεργειών ανάκτησης.

Ιεραρχία τάξης εξαίρεσης Java

Αφού εκτελεστεί μία δήλωση catch, οι άλλες παρακάμπτονται και η εκτέλεση συνεχίζεται μετά το μπλοκ try / catch. Τα ένθετα μπλοκ αλιευμάτων ακολουθούν την ιεραρχία εξαίρεσης.
  • Όλες οι τάξεις εξαίρεσης στην Java επεκτείνουν την τάξη «Throwable». Το Throwable έχει δύο υποκατηγορίες, Σφάλμα και Εξαίρεση
  • Η κλάση Σφάλμα καθορίζει την εξαίρεση ή τα προβλήματα που δεν αναμένεται να προκύψουν υπό κανονικές συνθήκες από το πρόγραμμά μας, για παράδειγμα Σφάλμα μνήμης, Σφάλμα υλικού, σφάλμα JVM κ.λπ.
  • Η κατηγορία εξαίρεσης αντιπροσωπεύει τις εξαιρέσεις που μπορούν να αντιμετωπιστούν από το πρόγραμμά μας και το πρόγραμμά μας μπορεί να ανακτηθεί από αυτήν την εξαίρεση χρησιμοποιώντας το μπλοκ δοκιμής και σύλληψης
  • Η εξαίρεση χρόνου εκτέλεσης είναι μια υποκατηγορία της κατηγορίας εξαίρεσης. Η εξαίρεση αυτού του τύπου αντιπροσωπεύει εξαίρεση που συμβαίνει κατά το χρόνο εκτέλεσης και οι οποίες δεν μπορούν να παρακολουθούνται κατά το χρόνο μεταγλώττισης. Ένα εξαιρετικό παράδειγμα του ίδιου είναι η διαίρεση με μηδενική εξαίρεση ή η εξαίρεση μηδενικού δείκτη κ.λπ.
  • Η εξαίρεση IO δημιουργείται κατά τη λειτουργία εισόδου και εξόδου
  • Διακοπή εξαιρέσεων στην Java, δημιουργείται κατά τη διάρκεια πολλαπλών νημάτων.
Παράδειγμα: Για να κατανοήσετε την ένθεση της δοκιμαστικής κίνησης

Βήμα 1) Αντιγράψτε τον ακόλουθο κώδικα σε πρόγραμμα επεξεργασίας.

class JavaException {public static void main(String args[]) {try {int d = 1;int n = 20;int fraction = n / d;int g[] = {1};g[20] = 100;}/*catch(Exception e){System.out.println("In the catch block due to Exception = "+e);}*/catch (ArithmeticException e) {System.out.println("In the catch block due to Exception = " + e);} catch (ArrayIndexOutOfBoundsException e) {System.out.println("In the catch block due to Exception = " + e);}System.out.println("End Of Main");}}

Βήμα 2) Αποθηκεύστε το αρχείο και μεταγλωττίστε τον κωδικό. Εκτελέστε το πρόγραμμα χρησιμοποιώντας την εντολή, Java JavaException .

Βήμα 3) Δημιουργείται ένα ArrayIndexOutOfBoundsException. Αλλάξτε την τιμή του int d σε 0. Αποθήκευση, μεταγλώττιση και εκτέλεση του κώδικα.

Βήμα 4 ) Πρέπει να δημιουργηθεί μια αριθμητική εξαίρεση.

Βήμα 5) Γραμμή αποτυχίας # 10 στη γραμμή # 12. Αποθήκευση, μεταγλώττιση και εκτέλεση του κώδικα.

Βήμα 6) Σφάλμα σύνταξης; Αυτό συμβαίνει επειδή το Exception είναι η βασική κατηγορία του ArithmeticException Exception. Οποιαδήποτε εξαίρεση που δημιουργείται από το ArithmeticException μπορεί να αντιμετωπιστεί και από την κατηγορία Exception. Έτσι, το μπλοκ catch του ArithmeticException δεν θα έχει ποτέ την ευκαιρία να εκτελεστεί, γεγονός που το καθιστά περιττό. Εξ ου και το σφάλμα σύνταξης.

Τελικά μπλοκ Java

Το τελικά μπλοκ εκτελείται ανεξάρτητα από την εξαίρεση που εμφανίζεται στο μπλοκ δοκιμής. Είναι προαιρετικό να χρησιμοποιήσετε με ένα μπλοκ δοκιμής.

 try {statement(s)} catch (ExceptiontType name) {statement(s)} finally {statement(s)}

Σε περίπτωση που δημιουργηθεί μια εξαίρεση στο μπλοκ δοκιμής, τελικά το μπλοκ εκτελείται μετά την εκτέλεση του μπλοκ σύλληψης.

Παράδειγμα

Βήμα 1) Αντιγράψτε τον ακόλουθο κώδικα σε πρόγραμμα επεξεργασίας.

class JavaException {public static void main(String args[]){try{int d = 0;int n =20;int fraction = n/d;}catch(ArithmeticException e){System.out.println("In the catch block due to Exception = "+e);}finally{System.out.println("Inside the finally block");}}}

Βήμα 2) Αποθήκευση, μεταγλώττιση και εκτέλεση του κώδικα.

Βήμα 3) Αναμενόμενη έξοδος. Τέλος εκτελείται μπλοκ ακόμα κι αν έχει δημιουργηθεί μια εξαίρεση.

Βήμα 4) Αλλάξτε την τιμή της μεταβλητής d = 1. Αποθηκεύστε, μεταγλωττίστε και εκτελέστε τον κώδικα και παρατηρήστε την έξοδο. Κάτω από τη φόρμα

Περίληψη :

  • Η εξαίρεση είναι ένα σφάλμα χρόνου εκτέλεσης που διακόπτει την κανονική ροή της εκτέλεσης του προγράμματος. Η διακοπή κατά την εκτέλεση του προγράμματος αναφέρεται ως σφάλμα ή εξαίρεση.
  • Τα σφάλματα ταξινομούνται σε δύο κατηγορίες
    • Σφάλματα χρόνου συλλογής - Σφάλματα σύνταξης, Σημασιολογικά σφάλματα
    • Σφάλματα χρόνου εκτέλεσης - Εξαίρεση
  • Ένα ισχυρό πρόγραμμα πρέπει να χειρίζεται όλες τις εξαιρέσεις και να συνεχίζει με την κανονική ροή εκτέλεσης του προγράμματος. Η Java παρέχει μια ενσωματωμένη εξαιρετική μέθοδο χειρισμού
  • Το Exception Handler είναι ένα σύνολο κώδικα που χειρίζεται μια εξαίρεση . Οι εξαιρέσεις μπορούν να αντιμετωπιστούν στην Java χρησιμοποιώντας το try & catch.
  • Δοκιμάστε το μπλοκ : Ο κανονικός κώδικας πηγαίνει σε αυτό το μπλοκ.
  • Catch block : Εάν υπάρχει σφάλμα στον κανονικό κώδικα, τότε θα μπείτε σε αυτό το μπλοκ