java:exceptions_thrown_by_methods
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
java:exceptions_thrown_by_methods [2020/02/27 20:30] – gthanos | java:exceptions_thrown_by_methods [2021/03/23 07:33] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== Χειρισμός της εξαίρεσης σε υψηλότερο επίπεδο ====== | ====== Χειρισμός της εξαίρεσης σε υψηλότερο επίπεδο ====== | ||
- | Στην | + | Ας υποθέσουμε τώρα |
- | <WRAP info 80% center round> | + | <code java ExceptionHandling.java> |
- | Ας υποθέσουμε ότι έχετε τις μεθόδους **main**, **method1**, | + | import java.util.Scanner; |
- | * Η **main** καλεί την **method1**. | + | import java.util.NoSuchElementException; |
- | * Η **method1** καλεί την **method2**. | + | import java.util.InputMismatchException; |
- | * Η **method2** καλεί την **method3**. | + | |
- | * Εάν συμβεί ένα **Exception** μέσα στη μέθοδο **method3** τότε αυτό μπορούμε να το διαχειριστούμε είτε μέσα στην **method3**, | + | 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(" | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </ | ||
- | Η **main** είναι | + | Στον παραπάνω κώδικα παρατηρούμε ότι η μέθοδος |
- | </ | + | ====== Stack Unwinding ====== |
- | Ας ξαναδούμε το προηγούμενο παράδειγμα ελαφρά παραλλαγμένο: | + | Κατά την πυροδότηση |
- | - Κατ' | + | |
- | - Στην συνέχεια κάνουμε comment-out τις γραμμές που ελέγχουν το '' | + | |
- | - Τέλος διαχειριζόμαστε την εξαίρεση μέσα στη μέθοδο | + | |
- | <code java WholeFileReader.java> | + | <code java ExceptionHandling.java> |
+ | import java.util.Scanner; | ||
+ | import java.util.NoSuchElementException; | ||
+ | import java.util.InputMismatchException; | ||
- | import java.io.*; | + | public class ExceptionHandling |
- | import java.lang.*; | + | |
- | + | ||
- | public class WholeFileReader | + | |
| | ||
- | public | + | public |
- | | + | |
+ | } | ||
| | ||
- | try { | + | public static double getRatio(Scanner sc) throws NoSuchElementException |
- | File file = new File (path); | + | System.out.print("Width: |
- | fReader = new FileReader(file); | + | int width = readInt(sc); |
- | BufferedReader in = new BufferedReader(fReader); | + | System.out.print("Height: |
- | String inputLine; | + | |
- | StringBuffer strDocument = new StringBuffer(); | + | |
- | try { | + | |
- | while ((inputLine = in.readLine()) != null) { | + | |
- | strDocument.append(inputLine); | + | |
- | } | + | |
- | + | ||
- | } | + | |
- | catch(IOException ex) { | + | |
- | | + | |
- | | + | |
- | return strDocument.toString(); | + | |
- | | + | |
- | /* //Remove exception from here. Handle it at a higher level | + | |
- | catch(FileNotFoundException ex) { | + | |
- | | + | |
- | | + | |
- | finally { | + | |
- | if( fReader != null) { | + | |
- | try { | + | |
- | System.out.println(" | + | |
- | | + | |
- | } | + | |
- | catch(IOException ex) { | + | |
- | System.out.println(" | + | |
- | } | + | |
- | } | + | |
- | } | + | |
- | | + | |
} | } | ||
| | ||
- | public static void main(String | + | public static void main(String []args) { |
- | | + | |
- | | + | try (Scanner sc = new java.util.Scanner(System.in)){ |
- | System.out.println(wfr.readFile(args[0]) ); | + | ratio = getRatio(sc); |
+ | System.out.format(" | ||
+ | | ||
+ | System.out.println("Input doen not match integer value."); | ||
+ | } catch(NoSuchElementException ex) { | ||
+ | System.out.println(" | ||
} | } | ||
- | catch(IndexOutOfBoundsException ex) { | + | |
- | System.out.println(" | + | |
- | | + | |
- | catch(FileNotFoundException ex) { | + | |
- | System.out.println(" | + | |
- | } | + | |
- | } | + | |
} | } | ||
</ | </ | ||
- | Στον παραπάνω | + | Στο παραπάνω |
- | + | ||
- | Εφόσον δεν διαχειριζόμαστε το // | + | |
- | + | ||
- | <code java> | + | |
- | throws FileNotFoundException | + | |
- | </ | + | |
- | + | ||
- | όπου περιγράφεται ποια // | + | |
- | + | ||
- | Η δήλωση **throws** υποχρεώνει | + | |
- | |Προηγούμενο: | + | |Προηγούμενο: |
java/exceptions_thrown_by_methods.1582835432.txt.gz · Last modified: 2020/02/27 20:30 by gthanos