java:exceptions_thrown_by_methods

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_thrown_by_methods [2015/03/03 08:11]
gthanos
java:exceptions_thrown_by_methods [2016/02/15 11:17]
gthanos
Line 1: Line 1:
 ====== Χειρισμός της εξαίρεσης σε υψηλότερο επίπεδο ====== ====== Χειρισμός της εξαίρεσης σε υψηλότερο επίπεδο ======
  
-Στην προηγούμενη ενότητα δείξαμε πως μπορούμε να χειριστούμε μια εξαίρεση όταν προκύπτει. Η Java μας δίνει την δυνατότητα να μην διαχειριστούμε την εξαίρεση μέσα στην μέθοδο που ​προκύπτει, αλλά να σε κάποια άλλη μέθοδο πιο πάνω που καλεί την ​μέθοδο που προκύπτει. Ας ξαναδούμε το προηγούμενο παράδειγμα ελαφρά παραλλαγμένο. ​+Στην προηγούμενη ενότητα δείξαμε πως μπορούμε να χειριστούμε μια εξαίρεση όταν προκύπτει. Η Java μας δίνει την δυνατότητα να μην διαχειριστούμε την εξαίρεση μέσα στην μέθοδο που ​δημιουργείται ή σε κάποια άλλη μέθοδο η οποία βρίσκεται ​πιο πάνω ​στην "​ιεραρχία"​ των μεθόδων ​που ​έχουν ήδη ​κληθεί και βρίσκονται μέσα στην ​στοίβα εκτέλεσης του προγράμματος μας. Ας ξαναδούμε το προηγούμενο παράδειγμα ελαφρά παραλλαγμένο. ​
  
-  ​- Κατ'​ αρχήν διαχωρίζουμε το ''​FileNotFoundException''​ από ​to ''​IOException''​ σε δύο διαφορετικά try blocks.+<WRAP info 80% center round> 
 +Ας υποθέσουμε ότι έχετε τις μεθόδους **main**, **method1**,​ **method2**,​ **method3** όπου η ιεραρχία κλήσεων μεταξύ τους είναι η εξής: 
 +  * Η **main** καλεί την **method1**. 
 +  * Η **method1** καλεί την **method2**. 
 +  * Η **method2** καλεί την **method3**. 
 + 
 +  * Εάν συμβεί ένα **Exception** μέσα στη μέθοδο **method3** τότε αυτό μπορούμε να το διαχειριστούμε είτε μέσα στην **method3**,​ είτε μέσα στις **method2**,​ **method1** και **main**.  
 +  * Αντίστοιχα,​ εάν συμβεί ένα **Exception** μέσα στη μέθοδο **method2** τότε αυτό μπορούμε να το διαχειριστούμε είτε μέσα στην **method2**,​ είτε μέσα στις **method1** και **main**.  
 + 
 +Η **main** είναι η τελευταία μέθοδος στην οποία μπορεί να γίνει διαχείριση ενός exception. Εάν η διαχείριση δεν γίνει και στη main, τότε το πρόγραμμα τερματίζει εκτυπώνοντας στην κονσόλα το Exception που δημιουργήθηκε. 
 + 
 +</​WRAP>​ 
 + 
 +  ​- Κατ'​ αρχήν διαχωρίζουμε το ''​FileNotFoundException''​ από ​το ''​IOException''​ σε δύο διαφορετικά try blocks.
   - Στην συνέχεια κάνουμε comment-out τις γραμμές που ελέγχουν το ''​FileNotFoundException''​ και αντ'​ αυτού προσθέτουμε μία δήλωση ''​throws FileNotFoundException''​ στην δήλωση της μεθόδου.   - Στην συνέχεια κάνουμε comment-out τις γραμμές που ελέγχουν το ''​FileNotFoundException''​ και αντ'​ αυτού προσθέτουμε μία δήλωση ''​throws FileNotFoundException''​ στην δήλωση της μεθόδου.
   - Τέλος διαχειριζόμαστε την εξαίρεση μέσα στη μέθοδο ''​main''​.   - Τέλος διαχειριζόμαστε την εξαίρεση μέσα στη μέθοδο ''​main''​.
  
-<code java>+<​code ​java WholeFileReader.java>
  
 import java.io.*; import java.io.*;
Line 72: Line 85:
   * ή εάν δεν έχουμε μία δήλωση **throw** για το συγκεκριμένο τύπο Exception στην δήλωση της μεθόδου από την οποία καλούμε την εν λόγω μέθοδο.   * ή εάν δεν έχουμε μία δήλωση **throw** για το συγκεκριμένο τύπο Exception στην δήλωση της μεθόδου από την οποία καλούμε την εν λόγω μέθοδο.
  
-|Προηγούμενο:​ [[:​java:​exceptions_try_catch_block| Διαχείριση Εξαιρέσεων ]] | Επόμενο:​ [[:java:exceptions_throwning ​| Δημιουργία και πυροδότηση εξαίρεσης ]]|+|Προηγούμενο:​ [[:​java:​exceptions_try_catch_block| Διαχείριση Εξαιρέσεων ]] | Επόμενο:​ [[:java:exceptions_throwing ​| Δημιουργία και πυροδότηση εξαίρεσης ]]|
java/exceptions_thrown_by_methods.txt · Last modified: 2017/02/16 15:08 by gthanos