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 [2017/02/06 14:59] – 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** υποχρεώνει τον compiler να βγάλει σφάλμα: | + | |Προηγούμενο: |
| - | * εάν δεν διαχειριστούμε τον συγκεκριμένο τύπο // | + | |
| - | * ή εάν δεν υπάρχει δήλωση **throws** για το συγκεκριμένο τύπο Exception στην | + | |
| - | |Προηγούμενο: | ||
java/exceptions_thrown_by_methods.1486393186.txt.gz · Last modified: 2017/02/06 14:59 by gthanos
