java:exceptions_intro

Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
java:exceptions_intro [2015/02/27 20:59]
ckonstantas
java:exceptions_intro [2015/02/27 21:06]
ckonstantas
Line 64: Line 64:
 Ο τρόπος με τον οποίον λειτουργεί είναι ο εξής. Όταν προκύψει ένα αντικείμενο εξαίρεσης,​ θα εκτελέσει το πρώτο μπλοκ το οποίο ταιριάζει με τον τύπο που περιγράφεται στα ορίσματα (στην προκειμένη περίπτωση ExceptionType). Συνεπώς θα συγκρίνει τον τύπο της εξαίρεσης που προέκυψε με όλους τους τύπους ,με τη σειρά έναν προς έναν, που υπάρχουν σαν παράμετροι στα catch blocks, μέχρι να βρεί κάποιο ταίριασμα και να πραγματοποιήσει τον κώδικα που είναι μέσα στο block. Ο τρόπος με τον οποίον λειτουργεί είναι ο εξής. Όταν προκύψει ένα αντικείμενο εξαίρεσης,​ θα εκτελέσει το πρώτο μπλοκ το οποίο ταιριάζει με τον τύπο που περιγράφεται στα ορίσματα (στην προκειμένη περίπτωση ExceptionType). Συνεπώς θα συγκρίνει τον τύπο της εξαίρεσης που προέκυψε με όλους τους τύπους ,με τη σειρά έναν προς έναν, που υπάρχουν σαν παράμετροι στα catch blocks, μέχρι να βρεί κάποιο ταίριασμα και να πραγματοποιήσει τον κώδικα που είναι μέσα στο block.
  
-Ας δούμε ένα μικρό τμήμα κώδικα που εντοπίζει ένα είδος εξαίρεσης.+Ας δούμε ένα μικρό τμήμα κώδικα που εντοπίζει ένα είδος εξαίρεσης ​το οποίο συναντήσαμε και παραπάνω:​ 
 + 
 +<code java TestDivideByZero.java> 
 +import java.io.*;​ 
 +import java.util.Scanner;​ 
 +public class TestDivideByZero { 
 +  
 +   ​public static void main (String[] args) { 
 +      int x; 
 +      int y; 
 +      int result; 
 + 
 +      System.out.print( "Enter first integer: " ); 
 +      x = input.nextInt();​ 
 + 
 +      System.out.print( "Enter second integer: " ); 
 +      y = input.nextInt();​ 
 +       
 +      try { 
 +           ​result = x/y; 
 +      } catch (ArithmeticException ae) { 
 +           ​System.out.println("​ArithmeticException occured!"​);​ 
 +           if(y = 0){ 
 +              System.out.println("​Division by zero in particular"​) 
 +           } 
 +      } 
 +       
 +      System.out.printf( "​Product is %d\n", result ); 
 +
 +</​code>​ 
 + 
 +Όπως βλέπουμε έχουμε το προηγούμενο παράδειγμα,​ εμπλουτισμένο όμως με κάποιον χειριστή(handler) ο οποίος θα αναγνωρίσει οτι υπάρχει κάποια διαίρεση με το 0 και έτσι θα ενημερώσει τον χρήστη. 
 + 
 +Ας δούμε ένα τμήμα κώδικα όπου θα βάζαμε αν χειριζόμασταν αρχεία αλλά και δομές δεδομένων:​
  
 <code java> <code java>
Line 77: Line 110:
 </​code>​ </​code>​
  
-Μπορούμε να καταλάβουμε ποιο είναι το πρώτο είδος εξαίρεσης που θα εντοπίσει;​ Είναι η εξαίρεση που προκύπτει όταν βγαίνουμε εκτός ορίων ​του πίνακαΠαρατηρούμε όμως οτι υπάρχει και ένα επιπλέον block που καλύπτει και τις εξαιρέσεις που μπορούν να προκύψουν απο την είσοδο ή την έξοδο στοιχείων (παράδειγμα:​ προσπαθούμε να ανοίξουμε ένα αρχείο που δεν υπάρχει).+Μπορούμε να καταλάβουμε ποιο είναι το πρώτο είδος εξαίρεσης που θα εντοπίσει;​ Είναι η εξαίρεση που προκύπτει όταν βγαίνουμε εκτός ορίων ​μιας δομής(π.χ. ​πίνακας).Παρατηρούμε όμως οτι υπάρχει και ένα επιπλέον block που καλύπτει και τις εξαιρέσεις που μπορούν να προκύψουν απο την είσοδο ή την έξοδο στοιχείων (παράδειγμα:​ προσπαθούμε να ανοίξουμε ένα αρχείο που δεν υπάρχει).
  
-Στο παραπάνω παράδειγμα το μόνο που κάνουμε είναι να εκτυπώσουμε ένα μήνυμα οτι προέκυψε μια εξαίρεση. Προφανώς,​ μπορούμε και πρέπει να βάλουμε κώδικα που κάνει κάτι πιο σημαντικό απο αυτό.+Στο παραπάνω παράδειγμα το μόνο που κάνουμε είναι να εκτυπώσουμε ένα μήνυμα οτι προέκυψε μια εξαίρεση. Προφανώς,​ μπορούμε και πρέπει να βάλουμε κώδικα που κάνει κάτι πιο σημαντικό απο αυτό. ​
  
  
    
java/exceptions_intro.txt · Last modified: 2019/04/20 05:02 by gthanos