Εισαγωγή στη
Download
1 / 22

Εισαγωγή στη JAV Α ( μέρος Β’ ) - PowerPoint PPT Presentation


  • 117 Views
  • Uploaded on

Εισαγωγή στη JAV Α ( μέρος Β’ ). Βασίλης Παπαταξιάρχης [email protected]} Μάθημα : Αντικειμενοστραφής Προγραμματισμός Διδάσκουσα : Ιζαμπώ Καράλη Τμήμα Πληροφορικής και Τηλεπικοινωνιών Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών. Περισσότερα θέματα στη Java. Λάθη και Εξαιρέσεις

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Εισαγωγή στη JAV Α ( μέρος Β’ )' - marion


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

Εισαγωγή στη JAVΑ(μέρος Β’)

Βασίλης Παπαταξιάρχης

[email protected]}

Μάθημα: Αντικειμενοστραφής Προγραμματισμός

Διδάσκουσα: Ιζαμπώ Καράλη

Τμήμα Πληροφορικής και Τηλεπικοινωνιών

Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών


Περισσότερα θέματα στη Java

  • Λάθη και Εξαιρέσεις

  • Μετατροπή Αντικειμένων

  • Είσοδος / Έξοδος

  • Γενικά Σχόλια

  • Εργαλεία Ανάπτυξης


Λάθη και Εξαιρέσεις

  • Κατά την εκτέλεση μίας μεθόδου μπορεί να προκληθούν συνθήκες απρόβλεπτες.

  • Σε αυτές τις περιπτώσεις εμφανίζονται λάθη (errors)και εξαιρέσεις (exceptions)

  • Η Java επιτρέπει αυτόματο χειρισμό τέτοιων λαθών (automated exception handling)

  • Ένα αντικείμενο της κλάσης Error δημιουργείται λόγω «σημαντικών» λαθών που δεν δύναται να αντιμετωπιστούν στα πλαίσια ενός προγράμματος

πακέτο

java.lang

  • Π.χ. NoClassDefFoundError

    (για παράδειγμα στην περίπτωση που έχουν οριστεί λάθος κατάλογοι στη μεταβλητήπεριβάλλοντος CLASSPATH)


Εξαιρέσεις (1/2)

  • Μία εξαίρεσηείναι οποιοδήποτε γεγονός διαταράσσει την ομαλή εκτέλεση ενός προγράμματος

  • Η μέθοδος στην οποία προκαλείται το σφάλμα δημιουργεί ένα exception object, το οποίο περιέχει πληροφορίες για το σφάλμα που προκλήθηκε και καλούμαστε να το διαχειριστούμε runtime.

  • Το σύστημα ελέγχει τη στοίβα κλήσης

    συναρτήσεων με σκοπό να βρει κώδικα

    που να κάνει handle το exception που

    προέκυψε.


Εξαιρέσεις (2/2)

  • Η αναζήτηση ξεκινά από τη συνάρτηση στην οποία προκλήθηκε το σφάλμα και καταλήγει στη main (ανπριν δεν βρεθεί handler)

  • Ένας handler είναι κατάλληλος να κάνει handle ένα exception αν ο τύπος του exception object ταιριάζει με τον τύπο εξαίρεσης που ο handler μπορεί να διαχειριστεί.

  • Αν βρεθεί κατάλληλος handler, τότε εκτελείται ο κώδικάς του, διαφορετικά το πρόγραμμα τερματίζεται.


Χειρισμός Εξαιρέσεων

  • try – catch

    • Η κλήση της μεθόδου η εκτέλεση της οποίας ενδέχεται να προκαλέσει μία εξαίρεση τοποθετείται εντός του μπλοκεντολών try.

try {

//κώδικας που μπορεί να

//προκαλέσει εξαίρεση

} catch(MyException1 mye1) {

// …

} catch(MyException2 mye2) {

// …

} finally {

// …

}

  • Το μπλοκ catch περιέχει εντολές που θα διαχειριστούν την εξαίρεση που προκλήθηκε.

  • finally: μπλοκ εντολών που ακολουθεί των catch μπλοκ και περιέχει κώδικα που εκτελείται είτε συμβεί εξαίρεση είτε όχι


Συνήθεις Εξαιρέσεις

  • NullPointerException: Προσπέλαση αντικειμένου null

  • IllegalArgumentException: Λάθος τύπου ορίσματα

  • ArrayIndexOutOfBoundsException: Εκτός ορίων πίνακα

  • ArithmeticException: Διαίρεση με το 0

  • FileNotFoundException: Το αρχείο δεν βρέθηκε στο δίσκο


Πλεονεκτήματα Χειρισμού Εξαιρέσεων

  • Διαχωρισμός κώδικα για αναγνώριση λαθών από τον «κανονικό» κώδικα

  • Ικανότητα διαχείρισης της εξαίρεσης ακολουθώντας τη στοίβα κλήσης μεθόδων

  • Δυνατότητα χειρισμού μίας εξαίρεσης με διαφορετικούς τρόπους

    • Πολλά catchμπλοκ μπορούν να αναφέρονται στο ίδιο tryμπλοκ

    • Υψηλότερα οι ειδικότερες εξαιρέσεις στον κώδικα

  • Δυνατότητα δημιουργίας νέων κλάσεων εξαιρέσεων


Μετατροπή Αντικειμένων Εξαιρέσεων

  • Η μετατροπή αντικειμένων (type casting)είναι χρήσιμη όταν θέλουμε να διαχειριστούμε ένα αντικείμενο ως διαφορετικού του ενός τύπου

  • Μετατροπές προς τα πάνω (upcasting)

    • Πάντα επιτρεπτές

    • Γίνονται με απλή ανάθεση

  • Μετατροπές προς τα κάτω (downcasting)

    • Δεν είναι πάντα επιτρεπτές

    • Γίνονται με χρήση cast τελεστή

    • Μπορεί να γίνει κανονικά η μεταγλώττιση (αφού το cast ίσως επιτρέπεται), αλλά να παραχθεί runtime error


Παράδειγμα Εξαιρέσεων


Είσοδος / Έξοδος ( ΕξαιρέσεωνI/O)

  • Η Java χρησιμοποιεί ροές (streams) για νααναπαραστήσει πηγές εισόδου ή προορισμούς εξόδου (π.χ. αρχεία στο δίσκο, άλλα προγράμματα).

    • Ροή: ακολουθία από δεδομένα (απλά bytes μέχρι σύνθετα αντικείμενα).

  • Είσοδος / Έξοδος σε αρχεία δίσκου


Ροές Εισόδου / Εξόδου Εξαιρέσεων

  • Ροές Εισόδου (Input Streams)

    • Διαβάζουν ένα «τεμάχιο» πληροφορίας τη φορά

  • Ροές Εξόδου (Output Streams)

    • Γράφουν ένα «τεμάχιο» πληροφορίας τη φορά


Τύποι Ροών Εξαιρέσεων (1/2)

  • Byte Streams: Ι/Ο αυθαίρετου τύπου δεδομένων

  • Character Streams: I/O χαρακτήρων

  • Buffered Streams : χρήση δομής buffer για αποδοτικότερη αλληλεπίδραση

  • Scanning and Formatting: για formatted κείμενο


Τύποι Ροών Εξαιρέσεων (2/2)

  • I/O from the command line

    • Standard Stream

      • Input: πληκτρολόγιο

      • Output: οθόνη

    • Console

  • Data Streams: για primitive data types και String δυαδικής μορφής

  • Object Streams: για οποιουδήποτε τύπου αντικείμενα


Byte streams
Byte Streams Εξαιρέσεων

  • Ροές που διαχειρίζονται χαμηλού επιπέδου δεδομένα

  • Συνήθεις ροές byte

    • FileInputStream/ FileOutputStream

  • Όλοι οι υπόλοιποι τύποι ροών βασίζονται στις ροές byte.


Ι/Ο από αρχεία δίσκου Εξαιρέσεων

  • Οι ροές δεν υποστηρίζουν όλες τις επιθυμητές αλληλεπιδράσεις με τα αρχεία που βρίσκονται στο δίσκο

  • File: χειρισμός αρχείων ανεξαρτήτου πλατφόρμας και OS

  • Random Access File: υποστηρίζει μη-ακολουθιακή προσπέλαση στα αρχεία


Χρόνος Εκτέλεσης Εξαιρέσεων

  • Γενικά, ο χρόνος εκτέλεσης ενός java προγράμματος αναμένεται μεγαλύτερος ενός ισοδύναμου σε κάποια άλλη γλώσσα προγραμματισμού (όχι όμως και ο χρόνος ανάπτυξης )

  • Αιτία: Ο μεταγλωττισμένος για μία μηχανή κώδικας είναι εν γένει ταχύτερος από τον κώδικα που εκτελείται από έναν interpreter.

  • Βελτίωση: Just-In-Time μεταγλώττιση


Κάποια Τελευταία Σχόλια… Εξαιρέσεων

  • Πώς προέκυψε ο όρος “bytecode”;

    • Επειδή ουσιαστικά αποτελεί μία binary αναπαράσταση του προγράμματος προορισμένη να εκτελεστεί από τη JVM (software)και όχι από το hardware.

  • Σε τι γλώσσα είναι γραμμένη η Java;

    • Οι περισσότεροι compilers(π.χ. της Sun) για Java είναι πλέον γραμμένοι σε Java, αν και αρχικά ως βάση χρησιμοποιήθηκαν οι γλώσσες C/C++.

    • Σε ότι αφορά τις JVM ακόμα και σήμερα χρησιμοποιούν C++ (όχι όμως αποκλειστικά), κυρίως για λόγους απόδοσης. Ακόμα και JVMs της Sun!


C vs java
C++ vs. Java Εξαιρέσεων


Εργαλεία Ανάπτυξης Εξαιρέσεων

  • Eclipse (open source)

  • NetBeans (open source)

  • JDeveloper (Oracle)

  • Visual J++ (Microsoft)


Προτεινόμενες Πηγές Εξαιρέσεων

  • Exceptions,http://java.sun.com/docs/books/tutorial/essential/exceptions/index.html

  • Input/Output, http://java.sun.com/docs/books/tutorial/essential/io/

  • Type casting, http://www.janeg.ca/scjp/oper/cast.html


Ερωτήσεις ? Εξαιρέσεων


ad