User Tools

Site Tools


java:exceptions_throwing

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
java:exceptions_throwing [2021/03/22 19:44] – [Δημιουργία νέων τύπων εξαιρέσεων και πυροδότηση εξαίρεσης] gthanosjava:exceptions_throwing [2021/03/23 07:34] (current) – external edit 127.0.0.1
Line 1: Line 1:
 ====== Δημιουργία νέων τύπων εξαιρέσεων και πυροδότηση εξαίρεσης ====== ====== Δημιουργία νέων τύπων εξαιρέσεων και πυροδότηση εξαίρεσης ======
  
-Στις προηγούμενες ενότητες είδαμε τον τρόπο με τον οποίο χειριζόμαστε μια εξαίρεση. Μέχρι αυτό το σημείο έχουμε αναφερθεί σε εξαιρέσεις που παρέχονται από κλάσεις της βασικής βιβλιοθήκης. Πως όμως δημιουργούνται αυτές οι εξαιρέσεις και πως και εμείς μπορούμε να καλέσουμε μια εξαίρεση;+Στις προηγούμενες ενότητες είδαμε τον τρόπο με τον οποίο χειριζόμαστε μια εξαίρεση. Μέχρι αυτό το σημείο έχουμε αναφερθεί σε εξαιρέσεις που παρέχονται από κλάσεις της βασικής βιβλιοθήκης. Πως όμως δημιουργούνται νέοι τύποι εξαιρέσεων και πως και εμείς μπορούμε να πυροδοτήσουμε μια εξαίρεση;
  
 Επανερχόμενοι στο προηγούμενο παράδειγμα, θα δημιουργήσουμε μία νέα κλάση απόγονο της κλάσης [[https://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html|java.lang.Exception]]. Επανερχόμενοι στο προηγούμενο παράδειγμα, θα δημιουργήσουμε μία νέα κλάση απόγονο της κλάσης [[https://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html|java.lang.Exception]].
  
-<code java  AbnormalSituationException.java>+<code java AbnormalSituationException.java>
 public class AbnormalSituationException extends java.lang.Exception { public class AbnormalSituationException extends java.lang.Exception {
    String msg = "Hello!";    String msg = "Hello!";
Line 25: Line 25:
 import java.util.InputMismatchException; import java.util.InputMismatchException;
  
-public class ExceptionHandling_7 {+public class ExceptionHandling {
        
   public static int readInt(Scanner sc) throws AbnormalSituationException {   public static int readInt(Scanner sc) throws AbnormalSituationException {
Line 57: Line 57:
 } }
 </code> </code>
-===== Παραγωγή εξαίρεσης ===== 
  
-Όπως τονίσαμε και παραπάνω η εξαίρεση είναι και αυτή ένα αντικείμενο. __Για να παράγουμε μία εξαίρεση πρέπει να βάλουμε τη δεσμευμένη λέξη **throw** και δίπλα το αντικείμενο της εξαίρεσης που θέλουμε να καλέσουμε__. Στο παρακάτω παράδειγμα, εάν μετά την ολοκλήρωση διαβάσματος του αρχείου αντιληφθούμε ότι το αρχείο που διαβάσαμε ήταν κενό τότε το πρόγραμμα μας δημιουργεί μία εξαίρεση του τύπου **EmptyFileException**. Δείτε τον κώδικα. 
  
-<code java WholeFileReader.java> +|Προηγούμενο: [[:java:exceptions_thrown_by_methods | Χειρισμός της εξαίρεσης σε υψηλότερο επίπεδο ]] | [[ :toc | Περιεχόμενα ]]  | Επόμενο: [[:java:exceptions_try_with_resources | Δημιουργία Αντικειμένων και Εξαιρέσεις ]]|
-import java.io.*; +
-import java.lang.*; +
- +
-public class WholeFileReader { +
-   +
-  public String readFile(String path) throws FileNotFoundException, EmptyFileException { +
-    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("IOException occured while reading from file "+path); +
-      } +
-      if( strDocument.toString().isEmpty() ) { +
-         throw new EmptyFileException(); +
-      } +
-      return strDocument.toString(); +
-    } +
-     +
-    finally { +
-      if( fReader != null) { +
-        try { +
-          //System.out.println("Closing file"); +
-          fReader.close(); +
-        }  +
-        catch(IOException ex) { +
-          System.out.println("IOException occured while reading from file "+path); +
-        } +
-      } +
-    } +
-     +
-  } +
-   +
-  public static void main(String args[]) { +
-    WholeFileReader wfr = new WholeFileReader(); +
-    try { +
-      System.out.println(wfr.readFile(args[0]) ); +
-    } +
-    catch(IndexOutOfBoundsException ex) { +
-      System.out.println("No file has been specified!\n"); +
-    } +
-    catch(FileNotFoundException ex) { +
-      System.out.println("The specified file was not found at "+ args[0]); +
-    } +
-    catch(EmptyFileException ex) { +
-      System.out.println("File is empty!!!"); +
-    } +
-  } +
- +
-+
-</code> +
- +
-|Προηγούμενο: [[:java:exceptions_thrown_by_methods | Χειρισμός της εξαίρεσης σε υψηλότερο επίπεδο ]] | [[ :toc | Περιεχόμενα ]]  | Επόμενο: [[:java:exceptions_try_with_resources | try-with-resources block ]]|+
  
java/exceptions_throwing.1616442269.txt.gz · Last modified: 2021/03/22 19:44 (external edit)