This shows you the differences between two versions of the page.
|
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(" | ||
| - | int width = sc.nextInt(); | ||
| - | System.out.print(" | ||
| - | 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(" | ||
| - | } catch(InputMismatchException ex) { | ||
| - | System.out.println(" | ||
| - | } catch(NoSuchElementException ex) { | ||
| - | System.out.println(" | ||
| - | } | ||
| - | } | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | Στον παραπάνω κώδικα παρατηρούμε ότι η μέθοδος getRatio μπορεί να παράγει μία εξαίρεση, | ||
| - | |||
| - | ====== Stack Unwinding ====== | ||
| - | |||
| - | Κατά την πυροδότηση μίας εξαίρεσης το πρόγραμμα διακόπτεται στο σημείο που συμβαίνει η εξαίρεση και το JVM | ||
| - | | ||
| - | |||
| - | |Προηγούμενο: | ||