Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Week 4: Exceptions Εβδομάδα 4: Εξαιρέσεις [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 • Ακέραιοι.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πολυμορφισμός – Αφηρημένες κλάσεις Interfaces (διεπαφές)
ΜΑΘΗΜΑ: ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C++ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 30 Ιουνίου 2014Δευτέρα, 30 Ιουνίου 2014Δευτέρα, 30 Ιουνίου 2014Δευτέρα, 30 Ιουνίου 2014Τμ.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Αντικείμενα ως ορίσματα.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα.
Κεφάλαιο 6 Threads. 2 Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 1 Εβδομάδα 9: Διανύσματα και λίστες.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 1 Εβδομάδα 3: Υλοποίηση μεθόδων.
ΜΑΘ-3122/106 Προγραμματισμός
Εντολες Επιλογης (Selection)
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα.
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Week 5: Introduction to design Εβδομάδα 5: Εισαγωγή στο σχεδιασμό.
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Week 11: Intro to Applets Εβδομάδα 11: Εισαγωγή στα Applets.
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Week 6: Java Collections Εβδομάδα 6: Συλλογές δεδομένων στην Java.
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Εβδομάδα 2: Υπο-τύποι και πολυμορφισμός [sub-typing and polymorphism]
Αντικειμενοστρεφής Προγραμματισμός, Αντώνιος Συμβώνης, Πανεπιστήμιο Ιωαννίνων, Slide 1 Week 13: Review Εβδομάδα 13: Ανασκόπηση.
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Week 9: Input / Output Εβδομάδα 8: Είσοδος / Έξοδος [Input / Output]
Μεθοδολογίες Προγραμματισμού ΙΙ JUNIT - Test First Design
Εισαγωγή στον Προγραμματισμό (στη γλώσσα Java)
Αντικείμενα, Κλάσεις και Μέθοδοι
Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 1 Εβδομάδα 7: Συμβολοσειρές.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Στατικές μέθοδοι και μεταβλητές Εσωτερικές κλάσεις.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Σύνθεση αντικειμένων Παράδειγμα: Τμήμα πανεπιστημίου.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Εισαγωγή Ειδικά Θέματα Μεταγγλωτιστών Χειμερινό Εξάμηνο / Κατασκευή compiler για την γλώσσα Minijava.
Προγραμματισμός ΙΙ Διάλεξη #6: Απλές Δομές Ελέγχου Δρ. Νικ. Λιόλιος.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java II.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Συλλογές Εξαιρέσεις.
Τεχνολογία ΛογισμικούSlide 1 Αλγεβρική Εξειδίκευση u Καθορισμός τύπων αφαίρεσης σε όρους σχέσεων μεταξύ τύπων λειτουργιών.
Μοντέλα Συστημάτων Παρουσιάσεις των συστημάτων των οποίων οι απαιτήσεις αναλύονται.
Προγραμματισμός ΙΙ Διάλεξη #5: Εντολές Ανάθεσης Εντολές Συνθήκης Δρ. Νικ. Λιόλιος.
Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 1 Εβδομάδα 11: Εκτέλεση Java χωρίς το BlueJ.
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής (Αντικειμενοστρεφής Προγραμματισμός)
Δείκτες (Pointers) – Δομές (Structs)
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αντικείμενα ως ορίσματα Εισαγωγή στις αναφορές.
Ποιότητα Λογισμικού Ενότητα 3: Σουίτες Ελέγχων. Διδάσκων: Γεώργιος Κακαρόντζας, Καθηγητής Εφαρμογών. Τμήμα Μηχανικών Πληροφορικής, Τεχνολογικής Εκπαίδευσης.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Γενικευμένες κλάσεις Συλλογές.
Templates Standard Template Library (STL) Exceptions Μεταπτυχιακό Πρόγραμμα Σπουδών, Τμήμα Εφαρμοσμένης Πληροφορικής.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πολυμορφισμός – Αφηρημένες κλάσεις Interfaces (διεπαφές)
ΟΣΣ Δεκεμβρίου 2004 Σχεδιασμός Λογισμικού Γλώσσες Προγραμματισμού ΙΙ ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ.
Τμήμα Πληροφορικής και Τηλεπικοινωνιών
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές.
Threads Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά η μία μετά.
Κεφάλαιο 4 Εξαιρέσεις. Όταν σε ένα πρόγραμμα συμβεί κάποιο λάθος, ο κώδικας εγείρει (throw) μία εξαίρεση. Στη Java oι εξαιρέσεις εκπροσωπούνται από αντικείμενα.
Κεφάλαιο 3 Τύποι Δεδομένων - Τελεστές. Πρωτογενείς τύποι δεδομένων: int, float, double, chars ΤύποςΌνομαΜέγεθος byte 8-bit signed, short 16-bit.
Εισαγωγή στη JAVΑ (μέρος Β’) Βασίλης Παπαταξιάρχης Μάθημα: Αντικειμενοστραφής Προγραμματισμός Διδάσκουσα: Ιζαμπώ Καράλη Τμήμα Πληροφορικής.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα.
Εισαγωγή στον Προγ/μό Η/Υ
Κατανεμημένα Συστήματα
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Εισαγωγή στον Προγ/μό Υπολογιστών
Κλάσεις και αντικείμενα
Wrapper Classes, Abstract Classes and Interfaces
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Κεφάλαιο 10 Streams.
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
[Μονοδιάστατοι πίνακες]
Week 9: Input / Output Διάλεξη #16: Είσοδος / Έξοδος [Input / Output]
Εξαιρέσεις [Exceptions]
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Μεταγράφημα παρουσίασης:

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Week 4: Exceptions Εβδομάδα 4: Εξαιρέσεις [Exceptions]

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 2 Το πρόβλημα Τα προγράμματα συχνά περιέχουν λάθη Τα λάθη πρέπει να αντιμετωπιστούν Ο χειρισμός (αντιμετώπιση) λαθών είναι δύσκολος Παράδειγμα: - Διαίρεση με το μηδέν - δείκτες διανυσμάτων εκτός ορίων Παράδειγμα: - Διαίρεση με το μηδέν - δείκτες διανυσμάτων εκτός ορίων

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

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 4 Δημιουργία εξαιρέσεων [throwing exceptions] Τα προγράμματα μπορεί να δημιουργήσουν τις δικές τους εξαιρέσεις με σκοπό να αναφέρουν προβλήματα public void remove(int elementNumber) throws Exception { if(elementNumber count) { throw new Exception(); }... }

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 5 Ο όρος “throws” Οι μέθοδοι που δημιουργούν εξαιρέσεις πρέπει να δηλώσουν τις εξαιρέσεις αυτές στην «υπογραφή» τους [signature] public void remove(int elementNumber) throws Exception { if(elementNumber count) { throw new Exception(); }... }

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 6 Η κλάση 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. Από τις ιστοσελίδες τεκμηρίωσης:

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 7 Η ιεραρχία των εξαιρέσεων Throwable Error RuntimeException Exception MyException

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

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

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

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 11 Η δημιουργία των «δικών μας» εξαιρέσεων 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"); } Οι «δικές μας» εξαιρέσεις [custom exceptions] δηλώνονται ως υποκλάσεις της κλάση Exception

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 12 Η δημιουργία των «δικών μας» εξαιρέσεων public void remove(int elementNumber) throws Exception { if(elementNumber count) { throw new NumberOutOfRangeException(elementNumber); }... } Οι «δικές μας» εξαιρέσεις μπορεί να αποθηκεύουν επιπρόσθετες πληροφορίες να χρησιμοποιηθούν στον χειρισμό άλλων εξαιρέσεων (λεπτομέρειες αργότερα…)

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 13 Το πρόβλημα Τις περισσότερες φορές δεν θέλουμε μόνο να αναφέρουμε τα προβλήματα. Επιθυμούμε να τα αποκαταστήσουμε! Το πρόγραμμα, ως οντότητα, δεν πρέπει να σταματήσει τη λειτουργία του. Τις περισσότερες φορές δεν θέλουμε μόνο να αναφέρουμε τα προβλήματα. Επιθυμούμε να τα αποκαταστήσουμε! Το πρόγραμμα, ως οντότητα, δεν πρέπει να σταματήσει τη λειτουργία του.

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 14 Η «σύλληψη» των εξαιρέσεων [Catching exceptions] Οι εξαιρέσεις μπορεί να συλληφθούν. method1: call method2 catch exception handle it method2: detects error throws exception

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 15 “ try ” και “ catch ”... int itemNumber = getInputFromUser(); try { database.remove(itemNumber); } catch (Exception exc) { System.out.println("an error occurred: " + exc); }...

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 16 Χειρισμός διαφόρων τύπων εξαιρέσεων... int itemNumber = getInputFromUser(); try { database.remove(itemNumber); } catch ( NumberOutOfRangeException exc) { System.out.println("an error occurred: " + exc); }...

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 17 “ try ” και “ finally ” public void someMethod() {.... try { // some code } finally { // clean up }.... } Εκτελείται πάντοτε!

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 18 Παράδειγμα 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(); } Μπορεί να δημιουργήσουν εξαιρεση

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 19 “ finally ” Το finally- τμήμα πάντοτε εκτελείται μετά το try -τμήμα, ανεξάρτητα από τον τρόπο με τον οποίο το try -τμήμα τερματίστηκε. Το finally -τμήμα μπορεί να χρησιμοποιηθεί για να εγγυηθεί τον ομαλό τερματισμό μιας σύνθετης λειτουργίας [to clean up after an operation] Το finally- τμήμα πάντοτε εκτελείται μετά το try -τμήμα, ανεξάρτητα από τον τρόπο με τον οποίο το try -τμήμα τερματίστηκε. Το finally -τμήμα μπορεί να χρησιμοποιηθεί για να εγγυηθεί τον ομαλό τερματισμό μιας σύνθετης λειτουργίας [to clean up after an operation]