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 [2020/02/27 20:33] gthanos |
java:exceptions_throwing [2021/03/22 19:59] gthanos [Παραγωγή εξαίρεσης] |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== Δημιουργία νέων τύπων εξαιρέσεων και πυροδότηση εξαίρεσης ====== | ====== Δημιουργία νέων τύπων εξαιρέσεων και πυροδότηση εξαίρεσης ====== | ||
| - | Στις προηγούμενες ενότητες είδαμε τον τρόπο με τον οποίο χειριζόμαστε μια εξαίρεση. Μέχρι αυτό το σημείο έχουμε αναφερθεί σε εξαιρέσεις που παρέχονται από κλάσεις του συστήματος. Πως όμως δημιουργούνται αυτές οι εξαιρέσεις και πως και εμείς μπορούμε να καλέσουμε μια εξαίρεση; | + | Στις προηγούμενες ενότητες είδαμε τον τρόπο με τον οποίο χειριζόμαστε μια εξαίρεση. Μέχρι αυτό το σημείο έχουμε αναφερθεί σε εξαιρέσεις που παρέχονται από κλάσεις της βασικής βιβλιοθήκης. Πως όμως δημιουργούνται αυτές οι εξαιρέσεις και πως και εμείς μπορούμε να καλέσουμε μια εξαίρεση; |
| - | Επανερχόμενοι στο παράδειγμα ανάγνωσης | + | Επανερχόμενοι στο προηγούμενο παράδειγμα, |
| - | <code java EmptyFileException.java> | + | <code java |
| - | public class EmptyFileException | + | public class AbnormalSituationException |
| + | | ||
| + | | ||
| + | | ||
| + | } | ||
| + | | ||
| + | | ||
| + | | ||
| + | } | ||
| } | } | ||
| </ | </ | ||
| - | ===== Παραγωγή εξαίρεσης | + | Κατά την |
| - | Όπως τονίσαμε και παραπάνω η εξαίρεση είναι και αυτή ένα αντικείμενο. __Για να παράγουμε μία εξαίρεση πρέπει να βάλουμε τη δεσμευμένη λέξη **throw** και δίπλα το αντικείμενο της εξαίρεσης που θέλουμε να καλέσουμε__. Στο παρακάτω παράδειγμα, | + | <code java ExceptionHandling.java> |
| + | import java.util.Scanner; | ||
| + | import java.util.NoSuchElementException; | ||
| + | import java.util.InputMismatchException; | ||
| - | <code java WholeFileReader.java> | + | public class ExceptionHandling |
| - | import java.io.*; | + | |
| - | import java.lang.*; | + | public |
| - | + | ||
| - | public class WholeFileReader | + | |
| - | + | ||
| - | public | + | |
| - | FileReader fReader = null; | + | |
| - | | + | |
| try { | try { | ||
| - | | + | |
| - | fReader = new FileReader(file); | + | } catch(NoSuchElementException |
| - | BufferedReader in = new BufferedReader(fReader); | + | throw new AbnormalSituationException(" |
| - | String inputLine; | + | |
| - | StringBuffer strDocument = new StringBuffer(); | + | |
| - | try { | + | |
| - | while ((inputLine = in.readLine()) != null) { | + | |
| - | strDocument.append(inputLine); | + | |
| - | } | + | |
| - | + | ||
| - | } | + | |
| - | | + | |
| - | System.out.println(" | + | |
| - | | + | |
| - | if( strDocument.toString().isEmpty() ) { | + | |
| - | throw new EmptyFileException(); | + | |
| - | } | + | |
| - | return strDocument.toString(); | + | |
| } | } | ||
| - | | ||
| - | finally { | ||
| - | if( fReader != null) { | ||
| - | try { | ||
| - | // | ||
| - | fReader.close(); | ||
| - | } | ||
| - | catch(IOException ex) { | ||
| - | System.out.println(" | ||
| - | } | ||
| - | } | ||
| - | } | ||
| - | | ||
| } | } | ||
| | | ||
| - | public static | + | public static |
| - | | + | |
| - | | + | |
| - | System.out.println(wfr.readFile(args[0]) | + | System.out.println(" |
| - | } | + | int height = readInt(sc); |
| - | | + | |
| - | System.out.println("No file has been specified!\n"); | + | |
| - | } | + | |
| - | | + | public static void main(String []args) { |
| - | System.out.println("The specified file was not found at "+ args[0]); | + | |
| - | } | + | try (Scanner sc = new java.util.Scanner(System.in)){ |
| - | catch(EmptyFileException ex) { | + | ratio = getRatio(sc); |
| - | System.out.println("File is empty!!!" | + | System.out.format("Ratio: %.2f", ratio); |
| + | } catch(AbnormalSituationException | ||
| + | System.out.println(ex); | ||
| + | StackTraceElement[] st = ex.getStackTrace(); | ||
| + | for(StackTraceElement e: st) | ||
| + | System.out.println(e); | ||
| } | } | ||
| } | } | ||
| - | |||
| } | } | ||
| </ | </ | ||
| + | |||
| |Προηγούμενο: | |Προηγούμενο: | ||