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/03/03 06:12]
gthanos [Exception Handler]
java:exceptions_intro [2015/03/03 06:19]
gthanos [Finaly Block]
Line 129: Line 129:
         fReader.close();​         fReader.close();​
       }catch(IOException ex) {       }catch(IOException ex) {
-        System.out.println("​IOException occured while reading from file "​+path);​+        System.out.println("​IOException occured while opening file or reading from file "​+path);​
         System.out.println("​Exiting..."​);​         System.out.println("​Exiting..."​);​
         System.exit(1);​         System.exit(1);​
Line 156: Line 156:
 ==== Finaly Block ==== ==== Finaly Block ====
  
-Εκτός από τα **catch** blocks τα οποία εκτελούνται όταν έχουμε κάποιο exception, μπορούμε να προσθέσουμε ένα finaly block το οποίο θα εκτελεστεί __σε κάθε περίπτωση__. Το finaly block θα εκτελεστεί ακόμη και σε περίπτωση που προκύψει μια εξαίρεση ενός τύπου που δεν έχουμε φροντίσει να συμπεριλάβουμε ή εάν δεν προκύψει καμία απολύτως εξαίρεση.+Εκτός από τα **catch** blocks τα οποία εκτελούνται όταν έχουμε κάποιο exception, μπορούμε να προσθέσουμε ένα finaly block το οποίο θα εκτελεστεί __σε κάθε περίπτωση__. Το finaly block θα εκτελεστεί ​στις παρακάτω περιπτώσεις: 
 +  * Εάν ​προκύψει η εξαίρεση που ​έχουμε φροντίσει να διαχειριστούμε (στο παρακάτω παράδειγμα FileNotFoundException). 
 +  * Εάν ​προκύψει μια εξαίρεση ενός τύπου που δεν έχουμε φροντίσει να διαχειριστούμε
 +  * Εάν δεν προκύψει καμία απολύτως εξαίρεση.
  
 +Δείτε το παρακάτω παράδειγμα όπου ενσωματώνει ένα **finally** block.
 <code java> <code java>
 import java.io.*; import java.io.*;
Line 219: Line 223:
 </​code>​ </​code>​
  
-Ο λόγος που ​μπορούμε ​να χρησιμοποιήσουμε το finaly ​block είναι για να συμπεριλάβουμε κώδικα που θέλουμε να εκτελεστεί σε όλες τις περιπτώσεις,​ όπως για παράδειγμα να κλείσουμε ελεγχόμενα τα αρχεία του προγράμματος. Στο παραπάνω παράδειγμα παραλάσεται η μέθοδος ReadFile του προηγούμενου παραδείγματος,​ ώστε στο //finally// block η μέθοδος κλείνει το αρχείο που άνοιξε. Η διαφορά σε σχέση με την προηγούμενη μέθοδο είναι ότι ακόμη και εάν δημιουργηθεί ένα exception την ώρα που διαβάζουμε η ροή του προγράμματος θα περάσει από το finally block και το αρχείο θα κλείσει. Αυτό δεν ισχύει ​για το προηγούμενο παράδειγμα.+Ο λόγος που ​συνήθως ​χρησιμοποιήσουμε το **finally** ​block είναι για να συμπεριλάβουμε κώδικα που θέλουμε να εκτελεστεί σε όλες τις περιπτώσεις,​ όπως για παράδειγμα να κλείσουμε ελεγχόμενα τα αρχεία του προγράμματος ​ή να κλείσουμε δικτυακές συνδέσεις (π.χ. συνδέσεις με βάσεις δεδομένων κ.α.). Στο παραπάνω παράδειγμα παραλλάσσεται η μέθοδος ReadFile του προηγούμενου παραδείγματος,​ ώστε στο //finally// block η μέθοδος κλείνει το αρχείο που άνοιξε. Η διαφορά σε σχέση με την προηγούμενη μέθοδο είναι ότι ακόμη και εάν δημιουργηθεί ένα exception την ώρα που διαβάζουμε η ροή του προγράμματος θα περάσει από το finally block και το αρχείο θα κλείσει. Αυτό δεν ισχύει ​στο παράδειγμα που δώσαμε ​προηγούμενα.
 ====== Χειρισμός της εξαίρεσης σε υψηλότερο επίπεδο ====== ====== Χειρισμός της εξαίρεσης σε υψηλότερο επίπεδο ======
  
java/exceptions_intro.txt · Last modified: 2019/04/20 05:02 by gthanos