java:exceptions_intro

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
java:exceptions_intro [2015/02/27 20:32]
ckonstantas [Αντικείμενο της εξαίρεσης(exception object)]
java:exceptions_intro [2016/02/15 10:17]
gthanos
Line 1: Line 1:
-====== ​Τι είναι η εξαίρεση(exception)====== +====== ​Εξαιρέσεις (Exceptions) ======
-Όπως αναφέρει και το όνομα της συγκεκριμένης ενότητας,​ θα αναφερθούμε σε έναν μηχανισμό ο οποίος διαχειρίζεται γεγονότα τα οποία δεν ανήκουν στην κανονική εκτέλεση του προγράμματος αλλά συμβαίνουν απροσδόκητα. Για να διασφαλίσουμε οτι το πρόγραμμά μας θα συνεχίσει την εκτέλεσή του ακόμη και αν συμβεί ένα απροσδόκητο γεγονός,​ χρησιμοποιούμε τον μηχανισμό των **εξαιρέσεων(exceptions)**.+
  
-Το βασικό πλεονέκτημα που μας προσδίδει η χρήση ​των εξαιρέσεων είναι το γεγονός οτι μπορούμε να επιλέξουμε σε ποιο σημείο ​ακριβώς θα διαχειριστούμε την εξαίρεση που έχει ​προκύψει.+Σε αυτή την ενότητα θα αναφερθούμε σε αντικείμενα τα οποία δημιουργούνται κατά την ροή εκτέλεσης ενός προγράμματος,​ όταν ​συμβαίνει κάτι αναπάντεχο ή μη διαχειρίσιμο από ​το πρόγραμμα. Σε αυτές της περιπτώσεις παράγεται ένα νέο αντικείμενο ​που ονομάζεται ξαίρεση" (//​exception//​),​ με παράλληλη διακοπή της κανονικής ροής του προγράμματος. Ο προγραμματιστής καλείται να διαχειριστεί μέσα από ​επιπλέον κώδικα ​τις πιθανές εξαιρέσεις, και κατ'​ επέκταση να διαχειριστεί ​ομαλά τα γεγονότα από τα οποία προέρχονται.
  
-===== Αντικείμενο της εξαίρεσης(exception object) ===== +Για ​να διασφαλίσουμε ότι το πρόγραμμά μας θα συνεχίσει την ​εκτέλεσή του ακόμη και ​αν συμβεί ένα απροσδόκητο γεγονός, χρησιμοποιούμε τον μηχανισμό διαχείρισης των **εξαιρέσεων (exceptions)**. Το βασικό πλεονέκτημα που μας προσδίδει ​η χρήση των εξαιρέσεων είναι το γεγονός ότι μπορούμε να επιλέξουμε ​σε ποιο ​σημείο του προγράμματος θα διαχειριστούμε την εξαίρεση που ​έχει προκύψει.
-Οτιδήποτε υπάρχει ​στην ​γλώσσα Java δεν είναι κάτι διαφορετικό απο αντικείμενο. Έτσι, ακόμη και οι εξαιρέσεις που μπορούν να προκληθούν, παράγουν ​ένα αντικείμενο το οποίο περιέχει ​όλες τις πληροφορίες που έχουν να κάνουν ​με το λάθος το οποίο έχει προκύψει όπως ​ο τύπος του λάθους και την κατάσταση που βρισκόταν ​το σύστημα όταν ​έγινε το λάθος αυτό.+
  
-Σε αυτό το σημείο ας δούμε ένα πολύ απλό και συχνό λάθος που μπορεί να προκύψει αν δεν το προσέξουμε εμείς ή ο χρήστης.+ 
 +====== Αντικείμενο της εξαίρεσης (exception object) ====== 
 + 
 +Κάθε εξαίρεση που μπορεί να προκληθεί παράγει ένα αντικείμενο το οποίο περιέχει όλες τις πληροφορίες που έχουν να κάνουν με το λάθος το οποίο έχει προκύψει,​ όπως ο τύπος του λάθους και την κατάσταση που βρισκόταν το πρόγραμμα όταν έγινε το λάθος αυτό. 
 + 
 +Σε αυτό το σημείο ας δούμε ένα πολύ απλό και συχνό λάθος που μπορεί να προκύψει αν δεν ​λάβει σχετική μέριμνα ​ο προγραμματιστής.
  
 <code java TestDivideByZero.java>​ <code java TestDivideByZero.java>​
Line 18: Line 21:
       int y;       int y;
       int result;       int result;
 +      Scanner input = new Scanner(System.in);​
  
       System.out.print( "Enter first integer: " );       System.out.print( "Enter first integer: " );
Line 28: Line 32:
       ​       ​
       System.out.printf( "​Product is %d\n", result );       System.out.printf( "​Product is %d\n", result );
 +   }
 } }
 </​code>​ </​code>​
Line 33: Line 38:
 Τι θα συμβεί στο παραπάνω πρόγραμμα αν ο 2ος αριθμός που θα δώσει ο χρήστης είναι 0; Επίσης αν ο χρήστης δεν δώσει αριθμό σαν είσοδο αλλά γράμμα;​ Τι θα συμβεί στο παραπάνω πρόγραμμα αν ο 2ος αριθμός που θα δώσει ο χρήστης είναι 0; Επίσης αν ο χρήστης δεν δώσει αριθμό σαν είσοδο αλλά γράμμα;​
  
-Όπως καταλαβαίνουμε,​ θα πρέπει να προβλέψουμε όλες τις περιπτώσεις(ή τουλάχιστον τις πιο βασικές) στις οποίες ο χρήστης είτε απο λάθος είτε επειδή είναι κακόβουλος θα δώσει σαν είσοδο κάτι το οποίο δεν είναι σωστό και θα προκαλέσει πρόβλημα. +Όπως καταλαβαίνουμε,​ θα πρέπει να προβλέψουμε όλες τις περιπτώσεις (ή τουλάχιστον τις πιο βασικές) στις οποίες ο χρήστης είτε από λάθος είτε επειδή είναι κακόβουλος θα δώσει σαν είσοδο κάτι το οποίο δεν είναι σωστό και θα προκαλέσει πρόβλημα. ​Το παραπάνω παράδειγμα είναι ​ένα από τα προβλήματα που μπορούν να δημιουργηθούν ​σε ένα πρόγραμμα ​και θα πρέπει να το καλύψουμε με σκοπό **να μην σταματήσει η εκτέλεση του προγράμματος**.
- +
-Προφανώς το παραπάνω παράδειγμα είναι ​μια μικρή κατηγορία των διαφόρων ​προβλημάτων που μπορούν να δημιουργηθούν και θα πρέπει να καλύψουμε με σκοπό **να μην σταματήσει η εκτέλεση του προγράμματος**.+
  
 Στο παραπάνω παράδειγμα συνεπώς,​ το σύστημα θα παράξει ένα αντικείμενο που θα περιγράφει το είδος του λάθους που συνέβη. Πρέπει εμείς με κάποιον τρόπο: Στο παραπάνω παράδειγμα συνεπώς,​ το σύστημα θα παράξει ένα αντικείμενο που θα περιγράφει το είδος του λάθους που συνέβη. Πρέπει εμείς με κάποιον τρόπο:
   - να λάβουμε αυτό το αντικείμενο   - να λάβουμε αυτό το αντικείμενο
   - να δούμε το λάθος που έχει προκύψει   - να δούμε το λάθος που έχει προκύψει
-  - να αντιμετωπίσουμε το λάθος έτσι ώστε το πρόγραμμά μας να επιστρέψει σε μια σωστή κατάσταση.+  - να αντιμετωπίσουμε το λάθος έτσι ώστε το πρόγραμμά μας να επιστρέψει σε μια ​"σωστή" ​κατάσταση. 
 + 
 +|Προηγούμενο:​ [[:​java:​interfaces| Διεπαφές (Interfaces) ]] | Επόμενο:​ [[:​java:​exceptions_try_catch_block | Διαχείριση Εξαιρέσεων]]|
  
-==== Try - catch block ==== 
java/exceptions_intro.txt · Last modified: 2019/04/20 05:02 by gthanos