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 Both sides next revision
java:exceptions_intro [2015/02/27 21:06]
ckonstantas
java:exceptions_intro [2015/02/27 21:25]
ckonstantas
Line 4: Line 4:
 Το βασικό πλεονέκτημα που μας προσδίδει η χρήση των εξαιρέσεων είναι το γεγονός οτι μπορούμε να επιλέξουμε σε ποιο σημείο ακριβώς θα διαχειριστούμε την εξαίρεση που έχει προκύψει. Το βασικό πλεονέκτημα που μας προσδίδει η χρήση των εξαιρέσεων είναι το γεγονός οτι μπορούμε να επιλέξουμε σε ποιο σημείο ακριβώς θα διαχειριστούμε την εξαίρεση που έχει προκύψει.
  
-===== Αντικείμενο της εξαίρεσης(exception object) =====+====== Αντικείμενο της εξαίρεσης(exception object) ​======
 Οτιδήποτε υπάρχει στην γλώσσα Java δεν είναι κάτι διαφορετικό απο αντικείμενο. Έτσι, ακόμη και οι εξαιρέσεις που μπορούν να προκληθούν,​ παράγουν ένα αντικείμενο το οποίο περιέχει όλες τις πληροφορίες που έχουν να κάνουν με το λάθος το οποίο έχει προκύψει όπως ο τύπος του λάθους και την κατάσταση που βρισκόταν το σύστημα όταν έγινε το λάθος αυτό. Οτιδήποτε υπάρχει στην γλώσσα Java δεν είναι κάτι διαφορετικό απο αντικείμενο. Έτσι, ακόμη και οι εξαιρέσεις που μπορούν να προκληθούν,​ παράγουν ένα αντικείμενο το οποίο περιέχει όλες τις πληροφορίες που έχουν να κάνουν με το λάθος το οποίο έχει προκύψει όπως ο τύπος του λάθους και την κατάσταση που βρισκόταν το σύστημα όταν έγινε το λάθος αυτό.
  
Line 42: Line 42:
   - να αντιμετωπίσουμε το λάθος έτσι ώστε το πρόγραμμά μας να επιστρέψει σε μια σωστή κατάσταση.   - να αντιμετωπίσουμε το λάθος έτσι ώστε το πρόγραμμά μας να επιστρέψει σε μια σωστή κατάσταση.
  
-==== Try - catch block ====+====== Try - catch block ======
 Στην προηγούμενη υποενότητα αναφερθήκαμε συνοπτικά στο αντικείμενο της εξαίρεσης. Δεν αναφερθήκαμε όμως στον τρόπο με τον οποίο αντιμετωπίζουμε τις εξαιρέσεις και πως τις χειριζόμαστε. ​ Στην προηγούμενη υποενότητα αναφερθήκαμε συνοπτικά στο αντικείμενο της εξαίρεσης. Δεν αναφερθήκαμε όμως στον τρόπο με τον οποίο αντιμετωπίζουμε τις εξαιρέσεις και πως τις χειριζόμαστε. ​
  
 Τονίσαμε οτι η εξαίρεση είναι εκτός της καθορισμένης λειτουργίας του προγράμματος και όταν προκύπτουν δημιουργούν ένα γεγονός(event). Όπως και τα υπόλοιπα γεγονότα που υπάρχουν στην java έτσι και αυτό το γεγονός χρειάζεται έναν χειριστή που θα φροντίσει για τη διαδικασία που θα ακολουθηθεί όταν προκύψει ένα τέτοιο γεγονός. ​ Τονίσαμε οτι η εξαίρεση είναι εκτός της καθορισμένης λειτουργίας του προγράμματος και όταν προκύπτουν δημιουργούν ένα γεγονός(event). Όπως και τα υπόλοιπα γεγονότα που υπάρχουν στην java έτσι και αυτό το γεγονός χρειάζεται έναν χειριστή που θα φροντίσει για τη διαδικασία που θα ακολουθηθεί όταν προκύψει ένα τέτοιο γεγονός. ​
  
-=== Exception Handler ===+==== Exception Handler ​====
 Κάθε τμήμα του κώδικα που υπάρχει περίπτωση να πυροδοτήσει μια εξαίρεση θα πρέπει να την εμπερικλείουμε σε ένα try block. Το block αυτό του κώδικα θα περιγράφει τον τρόπο αντιμετώπισης της κάθε πιθανής εξαίρεσης που μπορεί να προκύψει. Ο ορισμός του block είναι ο εξής: Κάθε τμήμα του κώδικα που υπάρχει περίπτωση να πυροδοτήσει μια εξαίρεση θα πρέπει να την εμπερικλείουμε σε ένα try block. Το block αυτό του κώδικα θα περιγράφει τον τρόπο αντιμετώπισης της κάθε πιθανής εξαίρεσης που μπορεί να προκύψει. Ο ορισμός του block είναι ο εξής:
  
Line 113: Line 113:
  
 Στο παραπάνω παράδειγμα το μόνο που κάνουμε είναι να εκτυπώσουμε ένα μήνυμα οτι προέκυψε μια εξαίρεση. Προφανώς,​ μπορούμε και πρέπει να βάλουμε κώδικα που κάνει κάτι πιο σημαντικό απο αυτό. ​ Στο παραπάνω παράδειγμα το μόνο που κάνουμε είναι να εκτυπώσουμε ένα μήνυμα οτι προέκυψε μια εξαίρεση. Προφανώς,​ μπορούμε και πρέπει να βάλουμε κώδικα που κάνει κάτι πιο σημαντικό απο αυτό. ​
 +
 +==== Finaly Block ====
 +Εκτός απο τα catch blocks, μπορούμε να έχουμε ένα finaly block το οποίο θα εκτελεστεί //​**πάντα**//​. Ακόμη και σε περίπτωση που προκύψει μια εξαίρεση ενός τύπου που δεν έχουμε φροντίσει να συμπεριλάβουμε,​ το finaly block θα εκτελεστεί.
 +
 +
 +<code java>
 +try {
 +
 +  File file = new File ("​C:/​Users/​Me/​Desktop/​directory/​file.txt"​);​
 +  PrintWriter printWriter = new PrintWriter ("​file.txt"​);​
 +  printWriter.println ("​hello"​);​
 +  printWriter.close ();
 +
 +} catch (IndexOutOfBoundsException e) {
 +    System.err.println("​IndexOutOfBoundsException:​ " + e.getMessage());​
 +} catch (IOException e) {
 +    System.err.println("​Caught IOException:​ " + e.getMessage());​
 +}finally {
 +    if (out != null) { 
 +        System.out.println("​Closing PrintWriter"​);​
 +        out.close(); ​
 +    } else { 
 +        System.out.println("​PrintWriter not open"​);​
 +    } 
 +
 +
 +</​code>​
 +
 +Επίσης,​ ένας λόγος που μπορούμε να χρησιμοποιήσουμε το finaly είναι για να συμπεριλάβουμε κώδικα που θέλουμε να εκτελεστεί για όλες τις εξαιρέσεις όπως για παράδειγμα να κλείσουμε ελεγχόμενα το πρόγραμμα.
 +
 +Στο παραπάνω παράδειγμα υπάρχει ολοκληρωμένο ένα μικρό τμήμα κώδικα που ανοίγει ένα αρχείο,​ γράφει κάτι και μετά το κλείνει. ​
  
  
    
java/exceptions_intro.txt · Last modified: 2019/04/20 05:02 by gthanos