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/02 16:46]
gthanos
java:exceptions_intro [2015/03/02 17:00]
gthanos [Finaly Block]
Line 156: Line 156:
  
 <code java> <code java>
- 
 import java.io.*; import java.io.*;
 import java.lang.*;​ import java.lang.*;​
Line 163: Line 162:
   ​   ​
   public String readFile(String path) {   public String readFile(String path) {
 +    FileReader fReader = null;
   ​   ​
     try {     try {
       File file = new File (path);       File file = new File (path);
-      ​FileReader ​fReader = new FileReader(file);​+      fReader = new FileReader(file);​
       BufferedReader in = new BufferedReader(fReader);​       BufferedReader in = new BufferedReader(fReader);​
       String inputLine;       String inputLine;
Line 180: Line 180:
         System.out.println("​Exiting..."​);​         System.out.println("​Exiting..."​);​
         System.exit(1);​         System.exit(1);​
-      } +      }      ​
-      finally { +
-        if( fReader != null) { +
-          try { +
-            //​System.out.println("​Closing file"​);​ +
-            fReader.close();​ +
-          }  +
-          catch(IOException ex) { +
-            System.out.println("​IOException occured while reading from file "​+path);​ +
-            System.out.println("​Exiting..."​);​ +
-            System.exit(1);​ +
-          } +
-        } +
-      }+
       return strDocument.toString();​       return strDocument.toString();​
     }     }
Line 199: Line 186:
       System.out.println("​The specified file was not found at "+ path);       System.out.println("​The specified file was not found at "+ path);
       return "";​       return "";​
-    }    ​+    } 
 +    finally { 
 +      if( fReader != null) { 
 +        try { 
 +          System.out.println("​Closing file"​);​ 
 +          fReader.close();​ 
 +        }  
 +        catch(IOException ex) { 
 +          System.out.println("​IOException occured while reading from file "​+path);​ 
 +          System.out.println("​Exiting..."​);​ 
 +          System.exit(1);​ 
 +        } 
 +      } 
 +    } 
 +    
   }   }
   ​   ​
Line 215: Line 216:
 </​code>​ </​code>​
  
-Ο λόγος που μπορούμε να χρησιμοποιήσουμε το finaly block είναι για να συμπεριλάβουμε κώδικα που θέλουμε να εκτελεστεί σε όλες τις περιπτώσεις,​ όπως για παράδειγμα να κλείσουμε ελεγχόμενα τα αρχεία του προγράμματος. Στο παραπάνω παράδειγμα ​υπάρχει ολοκληρωμένο ένα μικρό τμήμα κώδικα που ​ανοίγει ένα ​αρχείογράφει κάτι και μετά το κλείνει το αρχείο ​που άνοιξε προηγούμενα.+Ο λόγος που μπορούμε να χρησιμοποιήσουμε το finaly block είναι για να συμπεριλάβουμε κώδικα που θέλουμε να εκτελεστεί σε όλες τις περιπτώσεις,​ όπως για παράδειγμα να κλείσουμε ελεγχόμενα τα αρχεία του προγράμματος. Στο παραπάνω παράδειγμα παραλάσεται η μέθοδος ReadFile του προηγούμενου παραδείγματος, ​ώστε στο //finally// block η μέθοδος κλείνει το αρχείο ​που ​άνοιξε. Η διαφορά σε σχέση με την προηγούμενη μέθοδο είναι ότι ακόμη ​και ​εάν δημιουργηθεί ένα exception ​την ώρα που διαβάζουμε η ροή ​του προγράμματος θα περάσει από το finally block και το αρχείο ​θα κλείσει. Αυτό δεν ισχύει για το προηγούμενο παράδειγμα.
 ====== Χειρισμός της εξαίρεσης σε υψηλότερο επίπεδο ====== ====== Χειρισμός της εξαίρεσης σε υψηλότερο επίπεδο ======
 Στην προηγούμενη ενότητα δείξαμε πως μπορούμε να χειριστούμε μια εξαίρεση όταν προκύπτει. Υπάρχει ένας μηχανισμός που μας επιτρέπει να μην χειριστούμε την εξαίρεση στο σημείο που προκύπτει αλλά στο σημείο που καλείται η μέθοδος μεσα στην οποία θα προκύψει μια εξαίρεση. Στην προηγούμενη ενότητα δείξαμε πως μπορούμε να χειριστούμε μια εξαίρεση όταν προκύπτει. Υπάρχει ένας μηχανισμός που μας επιτρέπει να μην χειριστούμε την εξαίρεση στο σημείο που προκύπτει αλλά στο σημείο που καλείται η μέθοδος μεσα στην οποία θα προκύψει μια εξαίρεση.
java/exceptions_intro.txt · Last modified: 2019/04/20 05:02 by gthanos