This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
|
java:exceptions_throwing [2015/03/09 07:25] gthanos |
java:exceptions_throwing [2021/03/22 19:44] gthanos |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== Δημιουργία νέων τύπων εξαιρέσεων και πυροδότηση εξαίρεσης ====== | ====== Δημιουργία νέων τύπων εξαιρέσεων και πυροδότηση εξαίρεσης ====== | ||
| - | Στις προηγούμενες ενότητες είδαμε τον τρόπο με τον οποίο χειριζόμαστε μια εξαίρεση. Μέχρι αυτό το σημείο έχουμε αναφερθεί σε εξαιρέσεις που παρέχονται από κλάσεις του συστήματος. Πως όμως δημιουργούνται αυτές οι εξαιρέσεις και πως και εμείς μπορούμε να καλέσουμε μια εξαίρεση; | + | Στις προηγούμενες ενότητες είδαμε τον τρόπο με τον οποίο χειριζόμαστε μια εξαίρεση. Μέχρι αυτό το σημείο έχουμε αναφερθεί σε εξαιρέσεις που παρέχονται από κλάσεις της βασικής βιβλιοθήκης. Πως όμως δημιουργούνται αυτές οι εξαιρέσεις και πως και εμείς μπορούμε να καλέσουμε μια εξαίρεση; |
| - | Επανερχόμενοι στο παράδειγμα ανάγνωσης | + | Επανερχόμενοι στο προηγούμενο παράδειγμα, |
| - | <code java EmptyFileException.java> | + | <code java |
| - | public class EmptyFileException | + | public class AbnormalSituationException |
| + | | ||
| + | | ||
| + | | ||
| + | } | ||
| + | | ||
| + | | ||
| + | | ||
| + | } | ||
| } | } | ||
| </ | </ | ||
| - | Όπως τονίσαμε και παραπάνω η εξαίρεση είναι και αυτή ένα αντικείμενο. Για να καλέσουμε | + | Κατά την ανάγνωση από την γραμμή εντολών, |
| + | |||
| + | <code java ExceptionHandling.java> | ||
| + | import java.util.Scanner; | ||
| + | import java.util.NoSuchElementException; | ||
| + | import java.util.InputMismatchException; | ||
| + | |||
| + | public class ExceptionHandling { | ||
| + | |||
| + | public static int readInt(Scanner sc) throws AbnormalSituationException { | ||
| + | try { | ||
| + | return sc.nextInt(); | ||
| + | } catch(NoSuchElementException ex) { | ||
| + | throw new AbnormalSituationException(" | ||
| + | } | ||
| + | } | ||
| + | |||
| + | public static double getRatio(Scanner sc) throws AbnormalSituationException { | ||
| + | System.out.println(" | ||
| + | int width = readInt(sc); | ||
| + | System.out.println(" | ||
| + | int height = readInt(sc); | ||
| + | return width / (double)height; | ||
| + | } | ||
| + | |||
| + | public static void main(String []args) { | ||
| + | double ratio = -1.0; | ||
| + | try (Scanner sc = new java.util.Scanner(System.in)){ | ||
| + | ratio = getRatio(sc); | ||
| + | System.out.format(" | ||
| + | } catch(AbnormalSituationException ex) { | ||
| + | System.out.println(ex); | ||
| + | StackTraceElement[] st = ex.getStackTrace(); | ||
| + | for(StackTraceElement e: st) | ||
| + | System.out.println(e); | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | ===== Παραγωγή εξαίρεσης ===== | ||
| + | |||
| + | Όπως τονίσαμε και παραπάνω η εξαίρεση είναι και αυτή ένα αντικείμενο. | ||
| <code java WholeFileReader.java> | <code java WholeFileReader.java> | ||
| Line 75: | Line 124: | ||
| </ | </ | ||
| - | |Προηγούμενο: | + | |Προηγούμενο: |