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/03/02 15:13]
gthanos [Τι είναι η εξαίρεση (Exception);]
java:exceptions_intro [2015/03/02 15:35]
gthanos [Finaly Block]
Line 56: Line 56:
 <code java> <code java>
 try{ try{
-   code with some exception 
-}catch (ExceptionType name) { 
  
-}catch (ExceptionType name) {+   /*  
 +    * code that may throw an exception here. 
 +    */ 
 +    
 +}catch (ExceptionTypeOne ex) { 
 + 
 +}catch (ExceptionTypeTwo ex) {
  
 } }
 </​code>​ </​code>​
  
-Εντός του try block βάζουμε τον κώδικα που μπορεί να προκύψει μια εξαίρεση. ​Στο ​catch block (το οποίο παρατηρούμε οτι μπορεί να είναι ​πάνω ​απο ένα) βάζουμε τον κώδικα που θέλουμε να εκτελεστεί όταν θα προκύψει η κάθε εξαίρεση ​της ​οποίας ο τύπος περιγράφεται στα ορίσματα του catch block. ​ Όπως τονίσαμε μπορούμε να έχουμε πάνω απο ένα catch block.  +Εντός του ​**try** block βάζουμε τον κώδικα που μπορεί να προκύψει μια εξαίρεση. ​Κάθε **catch** block ορίζει ένα διαφορετικό τύπο εξαίρεσης μέσα ​στη παρένθεση. Εάν η εξαίρεση ​που παράγεται συμπίπτει __ως προς τον ​τύπο__ της ​με ένα ​αντικείμενο που ορίζεται εντός της παρενθέσεως ενός **catch** block, τότε αυτό το block θα εκτελεστεί. Θα εκτελεστεί επομένως ο κώδικας αντιστοιχεί στον τύπο ​δεδομένων ο οποίος ​παράχθηκε από ​την εκάστοτε εξαίρεση
- +
-Ο τρόπος ​με τον οποίον λειτουργεί είναι ο εξής. Όταν προκύψει ένα αντικείμενο εξαίρεσης, ​θα εκτελέσει το πρώτο μπλοκ το οποίο ταιριάζει με τον τύπο που περιγράφεται ​στα ορίσματα (στην ​προκειμένη περίπτωση ExceptionType). Συνεπώς θα συγκρίνει τον τύπο της ​εξαίρεσης που προέκυψε με όλους ​τους τύπους ,με τη σειρά έναν προς έναν, που υπάρχουν σαν ​παράμετροι στα catch blocks, μέχρι ​να βρεί κάποιο ταίριασμα και να πραγματοποιήσει τον κώδικα που είναι μέσα στο block.+
  
 Ας δούμε ένα μικρό τμήμα κώδικα που εντοπίζει ένα είδος εξαίρεσης το οποίο συναντήσαμε και παραπάνω:​ Ας δούμε ένα μικρό τμήμα κώδικα που εντοπίζει ένα είδος εξαίρεσης το οποίο συναντήσαμε και παραπάνω:​
Line 100: Line 102:
 </​code>​ </​code>​
  
-Όπως βλέπουμε έχουμε το προηγούμενο παράδειγμα,​ εμπλουτισμένο όμως με κάποιον χειριστή(handler) ο οποίος θα αναγνωρίσει ​οτι υπάρχει ​κάποια διαίρεση με το και έτσι θα ενημερώσει τον χρήστη.+Όπως βλέπουμε έχουμε το προηγούμενο παράδειγμα,​ εμπλουτισμένο όμως με κώδικα διαχείρισης της διαίρεσης με το μηδέν. Ο κώδικας θα αναγνωρίσει ​ότι υπάρχει ​δημιουργείται ''​ArithmeticException''​ και συγκεκριμένα διαίρεση με το μηδέν ​και θα εκτυπώσει τα σχετικά μηνύματα.
  
 ==== Finaly Block ==== ==== Finaly Block ====
-Εκτός απο τα catch blocks, μπορούμε να έχουμε ένα finaly block το οποίο θα εκτελεστεί ​//**πάντα**//Ακόμη και σε περίπτωση που προκύψει μια εξαίρεση ενός τύπου που δεν έχουμε φροντίσει να συμπεριλάβουμε ή δεν προκύψει καμία εξαίρεση, το finaly block θα εκτελεστεί.+ 
 +Εκτός από τα **catch** blocks ​τα οποία εκτελούνται όταν έχουμε κάποιο exception, μπορούμε να προσθέσουμε ένα finaly block το οποίο θα εκτελεστεί ​σε κάθε περίπτωσηΤο finaly block θα εκτελεστεί ακόμη και σε περίπτωση που προκύψει μια εξαίρεση ενός τύπου που δεν έχουμε φροντίσει να συμπεριλάβουμε ή δεν προκύψει καμία εξαίρεση.
  
 <code java> <code java>
java/exceptions_intro.txt · Last modified: 2019/04/20 05:02 by gthanos