Εξαιρέσεις [Exceptions]

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Κληρονομικότητα. Εισαγωγή  Κληρονομικότητα (Inheritance) καλείται ο μηχανισμός με τον οποίο μία νέα κλάση που ονομάζεται παράγωγη (derived class) δημιουργείται.
Advertisements

Συλλογές, Στοίβες και Ουρές Σε πολλές εφαρμογές μας αρκεί η αναπαράσταση ενός δυναμικού συνόλου με μια δομή δεδομένων η οποία δεν υποστηρίζει την αναζήτηση.
Στοιχειώδεις Δομές Δεδομένων TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Τύποι δεδομένων στη Java • Ακέραιοι.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Μέθοδοι που επιστρέφουν αντικείμενα Copy Constructor Deep and Shallow Copies.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πολυμορφισμός – Αφηρημένες κλάσεις Interfaces (διεπαφές)
ΜΑΘΗΜΑ: ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C++ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 30 Ιουνίου 2014Δευτέρα, 30 Ιουνίου 2014Δευτέρα, 30 Ιουνίου 2014Δευτέρα, 30 Ιουνίου 2014Τμ.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Αντικείμενα ως ορίσματα.
Κεφάλαιο 6 Threads. 2 Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 1 Εβδομάδα 3: Υλοποίηση μεθόδων.
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Φροντιστήρια Εισηγητής: Σπύρος Αργυρόπουλος Μέλος ΕΤΕΠ Εργαστήριο Προγραμματισμού & Τεχνολογίας Ευφυών Συστημάτων.
Τεχνολογία ΛογισμικούSlide 1 Έλεγχος Καταψύκτη (Ada) Τεχνολογία ΛογισμικούSlide 39 with Pump, Temperature_dial, Sensor, Globals, Alarm; use Globals ; procedure.
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Week 11: Intro to Applets Εβδομάδα 11: Εισαγωγή στα Applets.
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Week 9: Input / Output Εβδομάδα 8: Είσοδος / Έξοδος [Input / Output]
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Week 4: Exceptions Εβδομάδα 4: Εξαιρέσεις [Exceptions]
Αντικείμενα, Κλάσεις και Μέθοδοι
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Στατικές μέθοδοι και μεταβλητές Εσωτερικές κλάσεις.
Σύγκριση Java και C++ Μεταπτυχιακό Εφαρμοσμένης Πληροφορικής - Αλέξανδρος Χατζηγεωργίου, Νοέμβριος 2004.
Εισαγωγή Ειδικά Θέματα Μεταγγλωτιστών Χειμερινό Εξάμηνο / Κατασκευή compiler για την γλώσσα Minijava.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Συλλογές Εξαιρέσεις.
Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 1 Εβδομάδα 11: Εκτέλεση Java χωρίς το BlueJ.
ΗΥ – 340 Γλώσσες και Μεταφραστές Φροντιστήριο
Εισαγωγή στον αντικειμενοστραφή προγραμματισμό Κλάσεις και αντικείμενα Κλάσεις και αντικείμενα Κατασκευαστές κλάσεων (constructors) Κατασκευαστές κλάσεων.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αντικείμενα ως ορίσματα Εισαγωγή στις αναφορές.
Templates Standard Template Library (STL) Exceptions Μεταπτυχιακό Πρόγραμμα Σπουδών, Τμήμα Εφαρμοσμένης Πληροφορικής.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πολυμορφισμός – Αφηρημένες κλάσεις Interfaces (διεπαφές)
ΟΣΣ Δεκεμβρίου 2004 Σχεδιασμός Λογισμικού Γλώσσες Προγραμματισμού ΙΙ ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ.
Τμήμα Πληροφορικής και Τηλεπικοινωνιών
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές.
Threads Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά η μία μετά.
1 Κεφάλαιο 2 Εισαγωγή στον αντικειμενοστραφή προγραμματισμό.
Κεφάλαιο 4 Εξαιρέσεις. Όταν σε ένα πρόγραμμα συμβεί κάποιο λάθος, ο κώδικας εγείρει (throw) μία εξαίρεση. Στη Java oι εξαιρέσεις εκπροσωπούνται από αντικείμενα.
Βασικά στοιχεία της Java
Κεφάλαιο 3 Τύποι Δεδομένων - Τελεστές. Πρωτογενείς τύποι δεδομένων: int, float, double, chars ΤύποςΌνομαΜέγεθος byte 8-bit signed, short 16-bit.
Εισαγωγή στη JAVΑ (μέρος Β’) Βασίλης Παπαταξιάρχης Μάθημα: Αντικειμενοστραφής Προγραμματισμός Διδάσκουσα: Ιζαμπώ Καράλη Τμήμα Πληροφορικής.
Εισαγωγή στη Java (Μέρος B’) Για όσους γνωρίζουν C++ Βασίλης Στούμπος
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα.
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 10: Αφηρημένες τάξεις. Διδάσκων: Νικόλαος Θ Λιόλιος, Καθηγητής.
Μάθημα 9 Λίγο απ’ όλα! HTML 5 Advanced PHP XML. HTML 5 Πρόκειται για μια νέα έκδοση της HTML που συμπληρώνει τις δυνατότητες της γλώσσας με κάποια Tags.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πολυμορφισμός – Αφηρημένες κλάσεις Interfaces (διεπαφές) Ένα μεγάλο παράδειγμα.
Ειδικά Θέματα στον Προγραμματισμό Υπολογιστών
Εισαγωγή στον Προγ/μό Η/Υ
ΕΡΓΑΣΤΗΡΙΟ Ηλεκτρονικού Εμπορίου Ε-Επιχειρείν
Κατανεμημένα Συστήματα
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Εισαγωγή στον Προγ/μό Υπολογιστών
Κλάσεις και αντικείμενα
Wrapper Classes, Abstract Classes and Interfaces
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Χώροι ονομάτων (namespaces) 1/4
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Κεφάλαιο 10 Streams.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Εισαγωγή στη Java (Μέρος Α’)
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Εισαγωγή στον Προγραμματισμό (στη γλώσσα Java)
Διάλεξη #7: Συμβολοσειρές.
[Μονοδιάστατοι πίνακες]
Διάλεξη #10: Εκτέλεση Java χωρίς το BlueJ
Τύποι δεδομένων και τελεστές,
Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό (στη γλώσσα Java)
Week 9: Input / Output Διάλεξη #16: Είσοδος / Έξοδος [Input / Output]
Κληρονομικότητα [inheritance]
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Μεταγράφημα παρουσίασης:

Εξαιρέσεις [Exceptions] Week 4: Exceptions Διάλεξη #14: Εξαιρέσεις [Exceptions] Week 4: Exceptions time: 2 x one hour this lecture is done with live demo run in parallel topics: •

Το πρόβλημα Τα προγράμματα συχνά περιέχουν λάθη Τα λάθη πρέπει να αντιμετωπιστούν Ο χειρισμός (αντιμετώπιση) λαθών είναι δύσκολος Παράδειγμα: - Διαίρεση με το μηδέν - δείκτες διανυσμάτων εκτός ορίων

Εξαιρέσεις χρόνου-εκτέλεσης [runtime exceptions] Μερικές εντολές μπορεί να μην εκτελεστούν επιτυχώς Εάν δεν είναι επιτυχείς, τότε «δημιουργούν μία εξαίρεση» [throw an exception] Οι εξαιρέσεις μπορεί να παραχθούν σε οποιαδήποτε χρονική στιγμή Οι εξαιρέσεις διακόπτουν την ροή εκτέλεσης του προγράμματος Οι εξαιρέσεις χρησιμοποιούνται για την αναφορά λαθών Οι εξαιρέσεις μπορεί να γίνουν αντιληπτές («να συλληφθούν») [can be caught]

Δημιουργία εξαιρέσεων [throwing exceptions] Τα προγράμματα μπορεί να δημιουργήσουν τις δικές τους εξαιρέσεις με σκοπό να αναφέρουν προβλήματα public void remove(int elementNumber) throws Exception { if(elementNumber < 0 || elementNumber > count) throw new Exception(); } ...

Ο όρος “throws” Οι μέθοδοι που δημιουργούν εξαιρέσεις πρέπει να δηλώσουν τις εξαιρέσεις αυτές στην «υπογραφή» τους [signature] public void remove(int elementNumber) throws Exception { if(elementNumber < 0 || elementNumber > count) throw new Exception(); } ...

Η κλάση Exception Οι εξαιρέσεις είναι αντικείμενα (στιγμιότυπα της κλάσης Exception ή των υποκλάσεων της) Από τις ιστοσελίδες τεκμηρίωσης: public Exception() Constructs an Exception with no specified detail message. public Exception(String s) Constructs an Exception with the specified detail message. Parameters: s - the detail message.

Η ιεραρχία των εξαιρέσεων Throwable Error Exception MyException RuntimeException

Η ιεραρχία των εξαιρέσεων (συνέχεια) Η κλάση Throwable περιλαμβάνει τα λάθη [errors] και τις εξαιρέσεις [exceptions] Σε αντίθεση με τις εξαιρέσεις, τα λάθη «δεν μπορεί ποτέ να γίνουν αντιληπτά» Οι εξαιρέσεις που ανήκουν στην κλάση RuntimeException (και τις υποκλάσεις της) δεν χρειάζεται να δηλωθούν σε τμήμα «throws» (επόμενο slide) Οι εξαιρέσεις που δηλώνονται από τους χρήστες, πρέπει να κληρονομούν από την κλάση Exception

Ελεγχόμενες και μη ελεγχόμενες εξαιρέσεις [Checked vs. unchecked exceptions] Ορολογία: Οι περισσότερες εξαιρέσεις είναι ελεγχόμενες εξαιρέσεις και πρέπει να δηλώνονται σε ένα τμήμα throws. Μη ελεγχόμενες εξαιρέσεις μπορεί να δημιουργηθούν οποιαδήποτε στιγμή και δεν χρειάζεται να έχουν δηλωθεί. Οι μη ελεγχόμενες εξαιρέσεις υλοποιούνται στην Java μέσω της κλάσης RuntimeException. Για τον χειρισμό λαθών, οι χρήστες πρέπει πάντα να χρησιμοποιούν ελεγχόμενες εξαιρέσεις.

Παροχή περισσοτέρων πληροφοριών Συνήθως, θέλουμε να δώσουμε περισσότερες πληροφορίες σχετικά με το λάθος που προέκυψε public void remove(int elementNumber) throws Exception { if(elementNumber < 0 || elementNumber > count) throw new Exception("element number out of range"); } ...

Η δημιουργία των «δικών μας» εξαιρέσεων Οι «δικές μας» εξαιρέσεις [custom exceptions] δηλώνονται ως υποκλάσεις της κλάση Exception class NumberOutOfRangeException extends Exception { /** * Create a new exception with the illegal number * as an argument. */ NumberOutOfRangeException(int number) super("The number " + number + " is out of range"); }

Η δημιουργία των «δικών μας» εξαιρέσεων public void remove(int elementNumber) throws Exception { if(elementNumber < 0 || elementNumber > count) throw new NumberOutOfRangeException(elementNumber); } ... Οι «δικές μας» εξαιρέσεις μπορεί • να αποθηκεύουν επιπρόσθετες πληροφορίες • να χρησιμοποιηθούν στον χειρισμό άλλων εξαιρέσεων (λεπτομέρειες αργότερα…)

Το πρόβλημα Τις περισσότερες φορές δεν θέλουμε μόνο να αναφέρουμε τα προβλήματα. Επιθυμούμε να τα αποκαταστήσουμε! Το πρόγραμμα, ως οντότητα, δεν πρέπει να σταματήσει τη λειτουργία του.

Η «σύλληψη» των εξαιρέσεων [Catching exceptions] Οι εξαιρέσεις μπορεί να συλληφθούν. method1: call method2 catch exception handle it method2: detects error throws exception

“try” και “catch” ... int itemNumber = getInputFromUser(); try { database.remove(itemNumber); } catch (Exception exc) System.out.println("an error occurred: " + exc);

Χειρισμός διαφόρων τύπων εξαιρέσεων ... int itemNumber = getInputFromUser(); try { database.remove(itemNumber); } catch (NumberOutOfRangeException exc) System.out.println("an error occurred: " + exc);

“try” και “finally” Εκτελείται πάντοτε! public void someMethod() { .... try // some code } finally // clean up Εκτελείται πάντοτε!

Παράδειγμα Μπορεί να δημιουργήσουν εξαιρεση public boolean searchFor(String file, String word) throws StreamException { Stream input = null; try input = new Stream(file); while(!input.eof()) if(input.next() == word) return true; return false; } finally if(input != null) input.close(); Μπορεί να δημιουργήσουν εξαιρεση

“finally” Το finally-τμήμα πάντοτε εκτελείται μετά το try-τμήμα, ανεξάρτητα από τον τρόπο με τον οποίο το try-τμήμα τερματίστηκε. Το finally-τμήμα μπορεί να χρησιμοποιηθεί για να εγγυηθεί τον ομαλό τερματισμό μιας σύνθετης λειτουργίας [to clean up after an operation]