java:exceptions_thrown_by_methods

Differences

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

Link to this comparison view

java:exceptions_thrown_by_methods [2021/03/22 16:26]
gthanos
java:exceptions_thrown_by_methods [2021/03/23 07:33]
Line 1: Line 1:
-====== Χειρισμός της εξαίρεσης σε υψηλότερο επίπεδο ====== 
- 
-Ας υποθέσουμε τώρα ότι θέλουμε να επαναλάβουμε την λειτουργικότητα του προηγούμενου προγράμματος εντός της μεθόδου getRatio που καλείται από τη main, αλλά η διαχείριση της εξαίρεσης να εξακολουθεί γίνεται στη μέθοδο main. 
- 
-<code java ExceptionHandling.java> 
-import java.util.Scanner; 
-import java.util.NoSuchElementException; 
-import java.util.InputMismatchException; 
- 
-public class ExceptionHandling { 
-   
-  public static double getRatio(Scanner sc) throws NoSuchElementException { 
-    System.out.print("Width: "); 
-    int width = sc.nextInt(); 
-    System.out.print("Height: "); 
-    int height = sc.nextInt(); 
-    return width / (double)height; 
-  } 
-  public static void main(String []args) { 
-    try (Scanner sc = new java.util.Scanner(System.in)){ 
-      double ratio = getRatio(sc); 
-      System.out.format("Ratio: %.2f", ratio); 
-    } catch(InputMismatchException ex) { 
-      System.out.println("Input doen not match integer value."); 
-    } catch(NoSuchElementException ex) { 
-      System.out.println("You have closed the input from command line."); 
-    } 
-  } 
-} 
-</code> 
- 
-Στον παραπάνω κώδικα παρατηρούμε ότι η μέθοδος getRatio μπορεί να παράγει μία εξαίρεση, αλλά η διαχείριση της γίνεται από τη μέθοδο που την καλεί, δηλαδή τη μέθοδο main. Η μέθοδος getRatio δεν περιέχει try/catch block, είμαστε όμως υποχρεωμένοι να δηλώσουμε σε αυτή ότι παράγει ένα exception του τύπου [[https://docs.oracle.com/javase/7/docs/api/java/util/NoSuchElementException.html|NoSuchElementException]] (ο τύπος εμπεριέχει όλες τις απογόνους κλάσεις όπως την κλάση [[https://docs.oracle.com/javase/7/docs/api/java/util/InputMismatchException.html|InputMismatchException]]). 
- 
-====== Stack Unwinding ====== 
- 
-Κατά την πυροδότηση μίας εξαίρεσης το πρόγραμμα διακόπτεται στο σημείο που συμβαίνει η εξαίρεση και το JVM   
-   
- 
-|Προηγούμενο: [[:java:exceptions_try_catch_block| Διαχείριση Εξαιρέσεων ]] | [[ :toc | Περιεχόμενα ]] | Επόμενο: [[:java:exceptions_throwing | Δημιουργία και πυροδότηση εξαίρεσης ]]| 
  
java/exceptions_thrown_by_methods.txt · Last modified: 2021/03/23 07:33 (external edit)