java:exceptions_intro

Differences

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

Link to this comparison view

Next revision
Previous revision
Next revision Both sides next revision
java:exceptions_intro [2015/02/26 20:53]
ckonstantas created
java:exceptions_intro [2015/03/09 07:01]
gthanos [Αντικείμενο της εξαίρεσης (exception object)]
Line 1: Line 1:
-====== Τι είναι η εξαίρεση(**exception**); ====== +====== Τι είναι η εξαίρεση (Exception); ====== 
-Όπως ​αναφέρει και το όνομα της συγκεκριμένης ενότητας, θα αναφερθούμε σε έναν ​μηχανισμό ο οποίος διαχειρίζεται γεγονότα τα οποία ​δεν ανήκουν στην κανονική εκτέλεση του προγράμματος αλλά συμβαίνουν απροσδόκητα. Για να διασφαλίσουμε οτι το πρόγραμμά μας θα συνεχίσει την εκτέλεσή του ακόμη και αν συμβεί ένα απροσδόκητο γεγονός, χρησιμοποιούμε τον μηχανισμό των ​**εξαιρέσεων(exceptions)**.+ 
 +Σε αυτή την ενότητα θα αναφερθούμε σε αντικείμενα τα οποία δημιουργούνται ​κατά την ροή ​εκτέλεσης ενός προγράμματος, όταν συμβαίνει κάτι ​αναπάντεχο ή μη διαχειρίσιμο από το πρόγραμμα. Σε αυτές της περιπτώσεις παράγεται ​ένα νέο αντικείμενο που ονομάζεται "​εξαίρεση" (exception), ​με παράλληλη διακοπή της κανονικής ροής του ​προγράμματος. Ο προγραμματιστής καλείται να διαχειριστεί μέσα από ​επιπλέον κώδικα ​τις πιθανές εξαιρέσεις,​ και κατ'​ επέκταση να διαχειριστεί ομαλά τα γεγονότα ​από ​τα οποία ​προέρχονται. 
 + 
 +Για να διασφαλίσουμε ότι το πρόγραμμά μας θα συνεχίσει την ​εκτέλεσή του ακόμη και ​αν συμβεί ένα απροσδόκητο γεγονός, χρησιμοποιούμε τον μηχανισμό διαχείρισης των **εξαιρέσεων (exceptions)**. Το βασικό πλεονέκτημα που μας προσδίδει η χρήση των εξαιρέσεων είναι το γεγονός ότι μπορούμε να επιλέξουμε σε ποιο ​σημείο ​του προγράμματος ​θα διαχειριστούμε την εξαίρεση που έχει προκύψει. 
 + 
 + 
 +====== Αντικείμενο της εξαίρεσης (exception object) ====== 
 + 
 +Κάθε εξαίρεση που μπορεί να προκληθεί παράγει ένα αντικείμενο το οποίο περιέχει όλες τις πληροφορίες που έχουν να κάνουν με το λάθος το οποίο έχει ​προκύψει, ​όπως ο τύπος του λάθους ​και την κατάσταση που βρισκόταν το σύστημα όταν έγινε το λάθος ​αυτό. 
 + 
 +Σε αυτό το σημείο ​ας δούμε ένα πολύ απλό και συχνό λάθος που μπορεί να προκύψει αν δεν το προσέξουμε ​εμείς ή ο χρήστης. 
 + 
 +<code java TestDivideByZero.java>​ 
 +import java.io.*;​ 
 +import java.util.Scanner;​ 
 +public class TestDivideByZero { 
 +  
 +   ​public static void main (String[] args) { 
 +      int x; 
 +      int y; 
 +      int result; 
 +      Scanner input = new Scanner(System.in);​ 
 + 
 +      System.out.print( "Enter first integer: " ); 
 +      x = input.nextInt();​ 
 + 
 +      System.out.print( "Enter second integer: " ); 
 +      y = input.nextInt();​ 
 +       
 +      result = x/y; 
 +       
 +      System.out.printf( "​Product is %d\n", result ); 
 +   } 
 +
 +</​code>​ 
 + 
 +Τι θα συμβεί στο παραπάνω ​πρόγραμμα ​αν ο 2ος αριθμός που ​θα δώσει ο χρήστης ​είναι 0; Επίσης αν ο χρήστης δεν δώσει αριθμό σαν είσοδο αλλά γράμμα;​ 
 + 
 +Όπως ​καταλαβαίνουμε,​ θα πρέπει να προβλέψουμε όλες τις περιπτώσεις (ή τουλάχιστον τις πιο βασικές) στις οποίες ο χρήστης είτε από λάθος είτε επειδή είναι ​κακόβουλος θα δώσει σαν είσοδο κάτι το οποίο δεν είναι σωστό και θα προκαλέσει πρόβλημα. Το παραπάνω παράδειγμα ​είναι ​ένα ​από τα προβλήματα που μπορούν να δημιουργηθούν σε ένα πρόγραμμα ​και θα πρέπει να το καλύψουμε με σκοπό **να μην σταματήσει η εκτέλεση του προγράμματος**. 
 + 
 +Στο παραπάνω παράδειγμα συνεπώς, το σύστημα θα παράξει ένα αντικείμενο που θα περιγράφει το είδος του λάθους που συνέβη. Πρέπει εμείς με κάποιον ​τρόπο
 +  - να λάβουμε αυτό το αντικείμενο 
 +  - να δούμε το λάθος που έχει προκύψει 
 +  - να αντιμετωπίσουμε το λάθος έτσι ώστε το πρόγραμμά μας να επιστρέψει σε μια "σωστή"​ κατάσταση. 
 + 
 +|Προηγούμενο: [[:​java:​interfaces| Διεπαφές (Interfaces) ]] | Επόμενο:​ [[:​java:​exceptions_try_catch_block | Διαχείριση Εξαιρέσεων]]| 
java/exceptions_intro.txt · Last modified: 2019/04/20 05:02 by gthanos