This shows you the differences between two versions of the page.
|
java:exceptions_throwing [2020/04/30 10:50] gthanos [Δημιουργία νέων τύπων εξαιρέσεων και πυροδότηση εξαίρεσης] |
java:exceptions_throwing [2021/03/23 07:34] |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Δημιουργία νέων τύπων εξαιρέσεων και πυροδότηση εξαίρεσης ====== | ||
| - | |||
| - | Στις προηγούμενες ενότητες είδαμε τον τρόπο με τον οποίο χειριζόμαστε μια εξαίρεση. Μέχρι αυτό το σημείο έχουμε αναφερθεί σε εξαιρέσεις που παρέχονται από κλάσεις του συστήματος. Πως όμως δημιουργούνται αυτές οι εξαιρέσεις και πως και εμείς μπορούμε να καλέσουμε μια εξαίρεση; | ||
| - | |||
| - | Επανερχόμενοι στο παράδειγμα ανάγνωσης ενός αρχείου ας υποθέσουμε ότι θέλουμε να δημιουργούμε μία εξαίρεση αν το αρχείο είναι άδειο, δηλ δεν περιέχει κανένα χαρακτήρα. Για τον σκοπό αυτό δημιουργούμε ένα νέο τύπο εξαίρεσης με όνομα '' | ||
| - | |||
| - | <code java EmptyFileException.java> | ||
| - | public class EmptyFileException extends java.lang.Exception { | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | ===== Παραγωγή εξαίρεσης ===== | ||
| - | |||
| - | Όπως τονίσαμε και παραπάνω η εξαίρεση είναι και αυτή ένα αντικείμενο. __Για να παράγουμε μία εξαίρεση πρέπει να βάλουμε τη δεσμευμένη λέξη **throw** και δίπλα το αντικείμενο της εξαίρεσης που θέλουμε να καλέσουμε__. Στο παρακάτω παράδειγμα, | ||
| - | |||
| - | <code java WholeFileReader.java> | ||
| - | import java.io.*; | ||
| - | import java.lang.*; | ||
| - | |||
| - | public class WholeFileReader { | ||
| - | | ||
| - | public String readFile(String path) throws FileNotFoundException, | ||
| - | FileReader fReader = null; | ||
| - | | ||
| - | try { | ||
| - | File file = new File (path); | ||
| - | fReader = new FileReader(file); | ||
| - | BufferedReader in = new BufferedReader(fReader); | ||
| - | String inputLine; | ||
| - | StringBuffer strDocument = new StringBuffer(); | ||
| - | try { | ||
| - | while ((inputLine = in.readLine()) != null) { | ||
| - | strDocument.append(inputLine); | ||
| - | } | ||
| - | | ||
| - | } | ||
| - | catch(IOException ex) { | ||
| - | 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 void main(String args[]) { | ||
| - | WholeFileReader wfr = new WholeFileReader(); | ||
| - | try { | ||
| - | System.out.println(wfr.readFile(args[0]) ); | ||
| - | } | ||
| - | catch(IndexOutOfBoundsException ex) { | ||
| - | System.out.println(" | ||
| - | } | ||
| - | catch(FileNotFoundException ex) { | ||
| - | System.out.println(" | ||
| - | } | ||
| - | catch(EmptyFileException ex) { | ||
| - | System.out.println(" | ||
| - | } | ||
| - | } | ||
| - | |||
| - | } | ||
| - | </ | ||
| - | |||
| - | |Προηγούμενο: | ||