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:46]
gthanos [Exception Handler]
java:exceptions_intro [2015/03/03 07:08]
gthanos [Exception Handler]
Line 127: Line 127:
       while ((inputLine = in.readLine()) != null) {       while ((inputLine = in.readLine()) != null) {
         strDocument.append(inputLine);​         strDocument.append(inputLine);​
 +        //throw new IOException();​
       }       }
 +      System.out.println("​Closing File!"​);​
       fReader.close();​       fReader.close();​
       return strDocument.toString();​       return strDocument.toString();​
Line 136: Line 138:
     }        }   
     catch(IOException ex) {     catch(IOException ex) {
-      System.out.println("​IOException occured while opening file or reading from file "+path); +      System.out.println("​IOException occured while reading from file "​+path);​
-      System.out.println("​Exiting..."​);​ +
-      System.exit(1);+
     }    ​     }    ​
-    return "";​+    return "Nothing to return..";
   }   }
   ​   ​
Line 153: Line 153:
   }   }
  
-}</​code>​+} 
 +</​code>​
  
 Παρατηρήστε ότι εμφανίζονται δύο **catch** blocks. Το πρώτο catch block αφορά [[http://​docs.oracle.com/​javase/​7/​docs/​api/​java/​io/​IOException.html|ΙΟException]] objects, ενώ το δεύτερο catch block αφορά [[http://​docs.oracle.com/​javase/​7/​docs/​api/​java/​io/​FileNotFoundException.html|FileNotFoundException]] objects. Από τους συνδέσμους που παρατίθενται θα παρατηρήσετε ότι το ''​FileNotFoundException''​ είναι υποκλάση του ''​IOException''​. Ο παραπάνω κώδικας θα μπορούσε να παραλείπει τις γραμμές Παρατηρήστε ότι εμφανίζονται δύο **catch** blocks. Το πρώτο catch block αφορά [[http://​docs.oracle.com/​javase/​7/​docs/​api/​java/​io/​IOException.html|ΙΟException]] objects, ενώ το δεύτερο catch block αφορά [[http://​docs.oracle.com/​javase/​7/​docs/​api/​java/​io/​FileNotFoundException.html|FileNotFoundException]] objects. Από τους συνδέσμους που παρατίθενται θα παρατηρήσετε ότι το ''​FileNotFoundException''​ είναι υποκλάση του ''​IOException''​. Ο παραπάνω κώδικας θα μπορούσε να παραλείπει τις γραμμές
Line 164: Line 165:
 </​code>​ </​code>​
  
-καθώς ο μη εντόπισμός αρχείου θα ενέπιπτε σε ''​IOException''​ που είναι η γονική κλάση. Σε αυτή την περίπτωση όμως όταν θα συνέβαινε ​το exception ​δεν θα γνωρίζαμε εάν υπάρχει το αρχείο αλλά δεν μπορούμε να το διαβάσουμε ή δεν υπάρχει καθόλου το αρχείο που θέλουμε να διαβάσουμε στο filesystem. Επίσης,​ δεν θα είχε κανένα νόημα να βάλουμε τα catch blocks με ανάποδη σειρά δηλ.+καθώς ο μη εντόπισμός αρχείου θα ενέπιπτε σε ''​IOException''​ που είναι η γονική κλάση ​του ''​FileNotFoundException''​. Σε αυτή την περίπτωση όμως όταν θα συνέβαινε ​κάποιο Exception ​δεν θα γνωρίζαμε εάν υπάρχει το αρχείο αλλά δεν μπορούμε να το διαβάσουμε ή δεν υπάρχει καθόλου το αρχείο που θέλουμε να διαβάσουμε στο filesystem. ​ 
 + 
 +Επίσης,​ δεν θα είχε κανένα νόημα να βάλουμε τα catch blocks με ανάποδη σειρά δηλ.
 <code java> <code java>
     catch(IOException ex) {     catch(IOException ex) {
       System.out.println("​IOException occured while opening file or reading from file "​+path);​       System.out.println("​IOException occured while opening file or reading from file "​+path);​
-      System.out.println("​Exiting..."​);​ 
-      System.exit(1);​ 
     }    ​     }    ​
     catch(FileNotFoundException ex) {     catch(FileNotFoundException ex) {
Line 177: Line 178:
 </​code>​ </​code>​
 Σε αυτή την περίπτωση,​ ακόμη και ένα Exception του τύπου ''​FileNotFoundException''​ θα διαχειριστεί από το πρώτο block που διαχειρίζεται τα ''​IOExcetpions''​. Σε αυτή την περίπτωση,​ ακόμη και ένα Exception του τύπου ''​FileNotFoundException''​ θα διαχειριστεί από το πρώτο block που διαχειρίζεται τα ''​IOExcetpions''​.
 +
 +Τέλος, στο παραπάνω παράδειγμα βγάλτε τα σχόλια από την γραμμή για να δημιουργήσετε ένα ''​IOException''​ και παρατηρήστε την πορεία του κώδικα.
 +<code java>
 +  //throw new IOException();​
 +</​code>​
  
 ==== Finaly Block ==== ==== Finaly Block ====
java/exceptions_intro.txt · Last modified: 2019/04/20 05:02 by gthanos