Δοκιμάστε το Catch in Java: Exception Handling Example

Τι είναι το Exception στην Java;

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

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

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

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

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

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

Παράδειγμα συντακτικών σφαλμάτων:

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

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

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

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

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

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

Πατήστε εδώ εάν το βίντεο δεν είναι προσβάσιμο

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. Ο κανονικός κώδικας μπαίνει στο a ΔΟΚΙΜΑΣΤΕ ΟΙΚΟΔΟΜΙΚΟ ΤΕΤΡΑΓΩΝΟ.
  2. Ο κώδικας χειρισμού εξαιρέσεων μπαίνει στο ΑΛΙΕΥΜΑΤΩΝ μπλοκάρουν

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

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

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

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

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

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

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

Παράδειγμα

Βήμα 1) Αντιγράψτε το following κώδικα σε έναν επεξεργαστή

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) Ας δούμε τώρα πώς το try and catch θα μας βοηθήσει να χειριστούμε αυτήν την εξαίρεση. Θα βάλουμε την εξαίρεση που προκαλεί τη γραμμή κώδικα σε a προσπαθώ μπλοκ, ακολουθούμενο από α αλιευμάτων ΟΙΚΟΔΟΜΙΚΟ ΤΕΤΡΑΓΩΝΟ. Αντιγράψτε το following κώδικα στον επεξεργαστή.

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) Αποθηκεύστε, μεταγλωττίστε και εκτελέστε τον κώδικα. Θα λάβετε το following παραγωγή

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

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

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

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

Μετά την εκτέλεση μιας πρότασης catch, οι άλλες παρακάμπτονται και η εκτέλεση συνεχίζεται μετά το μπλοκ try/catch. Τα ένθετα μπλοκ αλίευσης ακολουθούν την ιεραρχία εξαίρεσης.


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

  • Όλες οι κλάσεις εξαίρεσης στην Java επεκτείνουν την κλάση "Throwable". Το Throwable έχει δύο υποκατηγορίες, Error και Exception
  • Η κλάση Error ορίζει την εξαίρεση ή τα προβλήματα που δεν αναμένεται να προκύψουν υπό κανονικές συνθήκες από το πρόγραμμά μας, παράδειγμα Σφάλμα μνήμης, Σφάλμα υλικού, σφάλμα JVM κ.λπ.
  • Η κλάση Exception αντιπροσωπεύει τις εξαιρέσεις που μπορούν να χειριστούν το πρόγραμμά μας και το πρόγραμμά μας μπορεί να ανακτηθεί από αυτήν την εξαίρεση χρησιμοποιώντας το μπλοκ try and catch
  • Μια εξαίρεση χρόνου εκτέλεσης είναι μια υποκλάση της κλάσης εξαίρεσης. Η Εξαίρεση αυτού του τύπου αντιπροσωπεύει την εξαίρεση που εμφανίζεται κατά το χρόνο εκτέλεσης και η οποία δεν μπορεί να παρακολουθηθεί κατά το χρόνο μεταγλώττισης. Ένα εξαιρετικό παράδειγμα του ίδιου είναι η διαίρεση με μηδενική εξαίρεση ή η εξαίρεση μηδενικού δείκτη κ.λπ
  • Η εξαίρεση IO δημιουργείται κατά την είσοδο και την έξοδο operaσεις
  • Οι εξαιρέσεις που έχουν διακοπεί σε Java, δημιουργούνται κατά τη διάρκεια πολλαπλών νημάτων.

Παράδειγμα: Για να κατανοήσετε την ένθεση των μπλοκ try and catch

Βήμα 1) Αντιγράψτε το following κώδικα σε έναν επεξεργαστή.

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) Πρέπει να δημιουργηθεί μια ArithmeticException.

Βήμα 5) Αφαιρέστε το σχόλιο από τη γραμμή #10 στη γραμμή #12. Αποθηκεύστε, μεταγλωττίστε και εκτελέστε τον κώδικα.

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

Java τελικά Block

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

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

  statement(s)

 } finally {

  statement(s)

 }

Σε περίπτωση που εγείρεται μια εξαίρεση στο μπλοκ try, τελικά το μπλοκ εκτελείται μετά την εκτέλεση του μπλοκ catch.

Παράδειγμα

Βήμα 1) Αντιγράψτε το following κώδικα σε έναν επεξεργαστή.

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. Αποθηκεύστε, μεταγλωττίστε και εκτελέστε τον κώδικα και παρατηρήστε την έξοδο. Κάτω φόρμας

Χαρακτηριστικά:

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