java:exceptions_thrown_by_methods

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
Next revision Both sides next revision
java:exceptions_thrown_by_methods [2015/03/03 08:02]
gthanos created
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 71: Line 84:
   * εάν δεν διαχειριστούμε τον συγκεκριμένο τύπο Exception στην μέθοδο από την οποία καλούμε την μέθοδο με την δήλωση **throw**.   * εάν δεν διαχειριστούμε τον συγκεκριμένο τύπο Exception στην μέθοδο από την οποία καλούμε την μέθοδο με την δήλωση **throw**.
   * ή εάν δεν έχουμε μία δήλωση **throw** για το συγκεκριμένο τύπο Exception στην δήλωση της μεθόδου από την οποία καλούμε την εν λόγω μέθοδο.   * ή εάν δεν έχουμε μία δήλωση **throw** για το συγκεκριμένο τύπο Exception στην δήλωση της μεθόδου από την οποία καλούμε την εν λόγω μέθοδο.
 +
 +|Προηγούμενο:​ [[:​java:​exceptions_try_catch_block| Διαχείριση Εξαιρέσεων ]] | Επόμενο:​ [[:​java:​exceptions_throwing | Δημιουργία και πυροδότηση εξαίρεσης ]]|
java/exceptions_thrown_by_methods.txt · Last modified: 2017/02/16 15:08 by gthanos