ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Συλλογές, Στοίβες και Ουρές Σε πολλές εφαρμογές μας αρκεί η αναπαράσταση ενός δυναμικού συνόλου με μια δομή δεδομένων η οποία δεν υποστηρίζει την αναζήτηση.
Advertisements

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Μέθοδοι που επιστρέφουν αντικείμενα Copy Constructor Deep and Shallow Copies.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πολυμορφισμός – Αφηρημένες κλάσεις Interfaces (διεπαφές)
ΕΙΣΑΓΩΓΗ ΣΤΗ JAVA. Reference • Thinking in Java, Bruce Eckel,
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Κεφάλαιο 6 Threads. 2 Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Constructors, equals, toString Αντικείμενα ως παράμετροι.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Week 4: Exceptions Εβδομάδα 4: Εξαιρέσεις [Exceptions]
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Συλλογές.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Σύνθεση αντικειμένων Παράδειγμα: Τμήμα πανεπιστημίου.
Εισαγωγή Ειδικά Θέματα Μεταγγλωτιστών Χειμερινό Εξάμηνο / Κατασκευή compiler για την γλώσσα Minijava.
ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ Is-like-a inheritance. Θεματολόγιο Κληρονομικότητα Παράδειγμα Κληρονομικότητα – Βελτιωμένο Παράδειγμα Ενθυλάκωση : public – private -
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Συλλογές Εξαιρέσεις.
ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ ΠΟΛΥΜΟΡΦΙΣΜΟΣ. ΑΝΑΚΕΦΑΛΑΙΩΣΗ Θεματολόγιο Κληρονομικότητα Παράδειγμα Κληρονομικότητα – Βελτιωμένο Παράδειγμα Ενθυλάκωση : public – private.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Copy Constructor Deep and Shallow Copies.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πολυμορφισμός – Αφηρημένες κλάσεις Interfaces (διεπαφές)
ΟΣΣ Δεκεμβρίου 2004 Σχεδιασμός Λογισμικού Γλώσσες Προγραμματισμού ΙΙ ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ.
Πανεπιστήμιο Κύπρου – Τμήμα Πληροφορικής ΕΠΛ446-Προχωρημένες Βάσεις Δεδομένων Ζωγραφάκης Ιωάννης.
Threads Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά η μία μετά.
Κεφάλαιο 4 Εξαιρέσεις. Όταν σε ένα πρόγραμμα συμβεί κάποιο λάθος, ο κώδικας εγείρει (throw) μία εξαίρεση. Στη Java oι εξαιρέσεις εκπροσωπούνται από αντικείμενα.
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 9: Κληρονομικότητα. Διδάσκων: Νικόλαος Θ Λιόλιος, Καθηγητής. Τμήμα.
Κεφάλαιο 3 Τύποι Δεδομένων - Τελεστές. Πρωτογενείς τύποι δεδομένων: int, float, double, chars ΤύποςΌνομαΜέγεθος byte 8-bit signed, short 16-bit.
Εισαγωγή στη JAVΑ (μέρος Β’) Βασίλης Παπαταξιάρχης Μάθημα: Αντικειμενοστραφής Προγραμματισμός Διδάσκουσα: Ιζαμπώ Καράλη Τμήμα Πληροφορικής.
Εισαγωγή στη Java (Μέρος B’) Για όσους γνωρίζουν C++ Βασίλης Στούμπος
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java.
1 Προγραμματισμός Διαδικτύου Ενότητα 3 : Κατηγορίες και κληρονομικότητα Ιωάννης Τσούλος Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου.
Βασικές ένοιες Αντικειμενοστραφούς Προγραμματισμού - Μέθοδοι ΕΡΓΑΣΤΗΡΙΟ AΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (Διαφάνειες: ΧΟΧΟΛΗΣ ΔΙΟΝΥΣΙΟΣ Προσαρμογή 2014:
Ηλεκτρονικό μητρώο του ελληνικού επιστημονικού και ερευνητικού δυναμικού Αλεξάνδρειο Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλονίκης Στα πλαίσια του μαθήματος.
Βασικές ένοιες Αντικειμενοστραφούς Προγραμματισμού - Κλάσεις ΕΡΓΑΣΤΗΡΙΟ AΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (Διαφάνειες: ΧΟΧΟΛΗΣ ΔΙΟΝΥΣΙΟΣ Προσαρμογή 2014:
Οντοκεντρικό Προγραμματισμός Νίκος Παπαδάκης. Λειτουργία της JAVA Η Java είναι σχεδιασμένη για το Internet και γενικά για δικτυακές εφαρμογές Στην java.
Εισαγωγή στον Προγ/μό Η/Υ
Εισαγωγή στον Προγ/μό Υπολογιστών
Αντικειμενοστραφής Προγραμματισμός ΙΙ
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Βασικές έννοιες Αντικειμενοστραφούς Προγραμματισμού ΙΙ
Αντικειμενοστραφής Προγραμματισμός ΙΙ
Πίνακες και αλφαριθμητικά
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Εισαγωγή στον Προγ/μό Υπολογιστών
Βασικές έννοιες Αντικειμενοστραφούς Προγραμματισμού ΙΙ
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Αντικειμενοστραφής Προγραμματισμός ΙΙ
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Βασικές ένοιες Αντικειμενοστραφούς Προγραμματισμού
Δομές διακλάδωσης, επαναλήψεις, μέθοδοι
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
JAVA Basics Εβδομάδα Νο. 1.
Αναδρομικές Εξισώσεις και Αφηρημένοι Τύποι Δεδομένων
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ
Ειδικά Θέματα στον Προγραμματισμό Υπολογιστών
Εισαγωγή στη Java (Μέρος Α’)
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Διάλεξη #10: Εκτέλεση Java χωρίς το BlueJ
Week 9: Input / Output Διάλεξη #16: Είσοδος / Έξοδος [Input / Output]
Εξαιρέσεις [Exceptions]
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Μεταγράφημα παρουσίασης:

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ «Κλάσεις στιγμιότυπα και διαχείριση αντικειμένων στην Java» Ρουσσάκης Ιωάννης, ΤΕΙ Κρήτης, I.T.E. Τσαγκαράκης Χαράλαμπος ΤΕΙ Κρήτης Σεμινάριο: Ανάπτυξη Διαδικτυακών Εφαρμογών με JAVA/3ο Σχολείο Κώδικα Ημερομηνία: 16/07/2015

Αντικειμενοστρεφής προγραμματισμός H java είναι μια γλώσσα αντικειμενοστραφούς προγραμματισμούς. Στον αντικειμενοστραφή προγραμματισμό υπάρχουν οι εξής βασικές έννοιες Κλάσεις Αντικείμενα Συγκέντρωση και υπερφόρτωση Κληρονομικότητα Πολυμορφισμός

Κλάσεις Μια κλάση μοντελοποιεί σε αφαιρετικό επίπεδο αντικείμενα τα οποία έχουν κοινά χαρακτηριστικά. Π.χ. Η κλάση φοιτητής Ο κάθε φοιτητής έχει AM,Fname, Lname, Address, telephone ktl. Mια κλάση έχει και μεθόδους(συναρτήσεις) για την διαχείριση των κοινών χαρακτηριστικών Π.χ public void setAM(String A) {AM=A;}

Κλάσεις public class Student { private String AM,Fname,Lname,telephone; private int age; public void setAM(String S){ //θέτει τιμή στο AM AM=S;} public void setAge(int a){ //θέτει τιμή στο age if (a>=17) { age=a; } else {System.out.println(“error”); } ....... }

Κλάσεις - constructor public class Student {private String AM,Fname,Lname,telephone,Address; private int age; ........... public Student (String A, String Fn, String Ln, String Ad, String tel, int ag) { AM=A; Fname=Fn; Lname=Ln; Address=Ad; Telephone=tel; If (ag>=17) {age=ag;} } public Student (String A) { // δεύτερος κατασκευαστής ΑΜ = Α;}  Οι μέθοδοι με το ίδιο όνομα με την κλάση χρησιμοποιούνται για να δημιουργήσουν νέα αντικείμενα αντιπρόσωπων της κλάσης

Αντικείμενα Τα αντικείμενα είναι αντιπρόσωποι μια κλάσης Κάθε αντικείμενο έχει όλα τα χαρακτηριστικά και τις μεθόδους της κλάσης της οποίας είναι αντιπρόσωπος. public class myMain{ public static void main(String[] args) { Student s1,s2; s1=new Student(‘HY123’,’Nikos’,’Papadopoulos’,’2821087652’,17); s2=new Student(‘HY223’); s2.setAge(20); … }} η κάθε κλάση έχει μια ή περισσότερες μεθόδους με το ίδιο όνομα με αυτήν και οι οποίοι καλούνται για να δεσμεύσουν μνήμη και να δημιουργήσουν ένα νέο αντικείμενο. κάθε αντικείμενο μπορεί να αναφερθεί στα χαρακτηριστικά του ή στις μεθόδους τους με την χρήση της τελείας (.)

Αντικείμενα public class myMain{ public static void main(String[] args) { Student s1,s2; s1=new Student(‘HY123’,’Nikos’,’Papadopoulos’,’2821087652’,17); s2=new Student(‘HY223’); s2.setAge(20); … }} Τα αντικείμενα s1 και s2 έχουν διαφορετικό χώρο στην μνήμη. Για να δημιουργηθεί ένα νέο αντικείμενο πρέπει να κληθεί ο constructor της κλάσης της οποίας είναι αντιπρόσωπος Στο πιο πάνω παράδειγμα το αντικείμενο s1 έχει τιμή σε όλα τα χαρακτηριστικά του ενώ το s2 μόνο στο AM.

Πίνακες Αντικειμένων public class myproject { public static void main(String[] args) { Student[] s; s=new Student[100]; //ορίζουμε ότι θα έχουμε 100 φοιτητές s[0]=new Student("Hy2543", "Kostas","papa","ikarou","ikhjhg",20); s[1]=new Student("Hy7653", "nikos","papa","ikarou","jghf",23); System.out.print(s[0].AM+s[1].AM+s.length); //το length είναι 100 }

Πίνακες Αντικειμένων Μπορούμε να ορίσουμε ένα πίνακα από αντικείμενα μια κλάσης. Για να δημιουργηθεί ο πίνακας χρησιμοποιούμε new ONOMA_CLASS[num] Μπορεί μια κλάση να έχει ως χαρακτηριστικό ένα πίνακα από αντικείμενα άλλη κλάσης π.χ. Η κλάση department

Παράδειγμα Να ορίσετε την κλάση department η οποία θα έχει 500 φοιτητές και θα πρέπει να υποστηρίζει εισαγωγή διαγραφή φοιτητών και εκτύπωση Επίσης η κλάση department θα έχει όνομα, ένα πίνακα από 20 τηλέφωνα (πρέπει να υποστηρίζει εισαγωγή διαγραφή και εκτύπωση)

Παράδειγμα public class department{ private Student st[]; private int numOfStudent; private String Name; private String [] arrayOfTelephone; public department(String n){ //ο Constructor Name=n; st=new Student[500]; arrayOfTelephone=new String[20]; numOfStudent=0; }

Παράδειγμα (συν.) //εισαγωγή νέου φοιτητή public void insertStudent(String AM,String Fname,String Lname, String Address, String Telephone,int age) { if (numOfStudent>=500) System.out.print("the numeber of students is 500"); else { st[numOfStudent]=new Student(AM,Fname,Lname,Address,Telephone,age); numOfStudent++; }

Παράδειγμα(συν) //διαγραφή φοιτητή public void deleteStudent(String AM) { int i; i=0; while ((i<numOfStudent) && (!AM.equals(st[i].AM))) i++; if (i==numOfStudent) {} else { int k=i; for(k=i;k<numOfStudent;k++){ st[k]=st[k+1]; } numOfStudent--;

Παράδειγμα (συν.) //εκτύπωση public void printStudent(){ System.out.println(numOfStudent); int i=0; while (i<numOfStudent) { System.out.println(st[i].AM); i++; }

public class myproject { public static void main(String[] args) { department d; d=new department("HMMY"); d.insertStudent("HY254", "Kostas","papa","ikarou","234345",20); d.insertStudent("HY7653", "nikos","papa","ikarou","345545",23); d.insertStudent("HY544", "manos","papa","kalokairinou","3242424",23); d.insertStudent("HY354", "manos","papa","kalokairinou","43242",23); d.insertStudent("HY123", "manos","papa","kalokairinou","32342",23); d.printStudent(); d.deleteStudent("HY254"); // } // TODO, add your application code // System.out.println("Hello World!"); } Τι θα εκτυπώσει το πιο πάνω πρόγραμμα.

Πλεονεκτήματα Αντικειμενοστρεφούς προγραμματισμού Μπορούμε να αποκρύπτομε πληροφορία την οποία δεν θέλουμε να βλέπει ο χρήστης. Μπορούμε να ελέγχουμε τι τιμές βάνει ο χρήστης σε κάθε χαρακτηριστικό. Αυτό επιτυγχάνεται με το να «αναγκάσουμε» τον χρήστη να χρησιμοποιήσει τις μεθόδους για να προσπελάσει ένα αντικείμενο.

Υπερφορτισμός Μια κλάση μπορεί να έχει πολλές μεθόδους με το ίδιο όνομα αλλά διαφορετικούς παραμέτρους (σε τύπο, σε αριθμό, ή ακόμα και στην σειρά). Όταν ένα αντικείμενο καλεί μια μέθοδο η οποία έχει οριστεί πολλές φορές με το ίδιο όνομα τότε το ποία από όλες θα καλεστεί εξαρτάται από τα ορίσματα. Ο ορισμός πολλών μεθόδων με το ίδιο όνομα ονομάζεται υπερφορτισμός.

Οι λέξεις public – private - protect Ότι είναι protect μπορούμε να το προσπεράσουμε μόνο με χρήση των μεθόδων της κλάσης. Η διαφορά private – protect θα φανεί παρακάτω όταν εξηγήσομε την κληρονομικότητα

public-private-protect public class Student {private String AM,Fname; public Lname,telephone; protect int age; ........... public Student (String A, String Fn, String Ln,String Ad, String tel, int ag) { AM=A; Fname=Fn; Lname=Ln; Address=Ad; Telephone=tel; If (ag>=17) {age=ag;} } public Student (String A) { ΑΜ = Α;} public class myMain{ public static void main(String[] args) { Student s1,s2; s1=new Student(……); s2=new Student(‘HY223’); s2.setAge(20); s1.Lname=“Papas”; //σωστό s1.age=23; //λάθος s1.setAge(20); //σωστό s1.AM=“HY5644”; //λάθος s1.setAM(“HY5644”); //σωστό … }

Πλεονεκτήματα από τον ορισμό κλάσεων

Η έννοια του this public class Student {private String AM,Fname,Lname,telephone,Address; private int age; ........... public Student (String AM, String Fname, String Lname, String Address, String telphone, int age) { this.AM=AM; this.Fname=Fname; this.Lname=Lname; this.Address=Address; this.telephone=telphone; if (ag>=17) {this.age=age;} } To this μας βοηθάει να ξεχωρίσομε σε ποία μεταβλητή αναφερόμαστε (στα χαρακτηριστικά του αντικειμένου ή στην παράμετρο της μεθόδου To this αναφέρεται στο αντικείμενο το οποίο καλεί την μέθοδο .Άρα το this. είναι χαρακτηριστικό.

Η έννοια του this Μπορούμε να χρησιμοποιήσομε την λέξη κλειδί this για να αναφερθούμε σε συγκεκριμένο αντικείμενο κατά το run-time. Αυτό σημαίνει ότι το this είναι ο δείκτης που δείχνει στο αντικείμενο το οποίο καλεί την συγκεκριμένη μέθοδο.

Εξαιρέσεις Εξαιρέσεις είναι ένα σήμα που παίρνουμε από την JVM σε χρόνο εκτέλεσης ότι κάτι μη «συμβατό» συμβαίνει. Πχ. Διαίρεσει με το 0, αναφορά σε null δείκτη. Στην java έχομε πολλές εξαιρέσεις. Η java μας προσφέρει ένα οργανωμένο τρόπο για την διαχείριση των εξαιρέσεων.

Πιθανές Περιπτώσεις Εξαιρέσεων Διαίρεση με το 0, εύρευση τετραγωνικής ρίζας ή λογαρίθμου αρνητικού αριθμού, οποιαδήποτε μαθηματική πράξη η οποία είναι αδύντη. Προσπάθεα πρόσβαση σε μη έγκυρη θέση πίνακα. Προσπάθεια να διαβάσομε ένα κενό αρχείο. Προσπάθεια να εκετελέσομε κάποια μέθοδο με λάθος είσοδο. Προσπάθεια να χρησιμποιήσουμε ένα Null δείκτη. Ανεπιτυχής προσπάθεια να εκτελέσομε μια sql εντολή. Κτλ.

Τι γίνεται όταν συμβεί μια εξαίρεση εξαίρεσης Δημιουργήται ένα αντικείμενο εξαίρεσης. Αυτό το αντικείμενο εξαίρεσης περιέχει πληροφορίες για την εξαίρεση. (Δηλαδή τι το δημιούργησε κτλ.) Όταν δημιουργηθεί μια εξαίρεση θα πρέπει το πρόγραμμα να είναι σε θέση να την χειριστεί.

Ιεραρχία Εξαιρέσεων Object Thrwable Error VirtualMachine Exception IOException SQLException RuntimeException ArithemeticException NullPointerExecption Error VirtualMachine

Χειρισμός Εξαιρέσεων RuntimeExeception -Διαίρεση με το 0, εύρευση τετραγωνικής ρίζας ή λογαρίθμου αρνητικού αριθμού, οποιαδήποτε μαθηματική πράξη η οποία είναι αδύντη. -Προσπάθεα πρόσβαση σε μη έγκυρη θέση πίνακα. -Προσπάθεια να διαβάσομε ένα κενό αρχείο. -Προσπάθεια να εκετελέσομε κάποια μέθοδο με λάθος είσοδο. Πρέπει να γράφουμε τα προγράμματα μας έτσι ώστε να μην συμβαίνουν αυτές οι εξαιρέσεις.

Χειρισμός Εξαιρέσεων ΙΟExeception - SQLException Αυτές είναι εξαιρέσεις που μπορούν να συμβούν - Προσπαθώντας να διαβάσομε ένα άδειο αρχείο - Προσπαθώντας να δώσουμε λάθος είσοδο - Προσπαθώντας να εκτελέσουμε μια εντολή sql με λάθος τρόπο. Πρέπει να ελέγχονται με χρήση της εντολής try{….} catch(..){….} ή πρέπει να προωθούνται εκτός μεθόδου με χρήση της throws, throw.

Χειρισμός Εξαιρέσεων Error Σε αυτήν την περίπτωση το λάθος οφείλεται σην Virtual Manchine. Δεν μπορούμε να κάνουμε τίποτα.

Χειρισμός exceptions try-catch Σύνταξη try{ ………… } catch(typeEcx1 e){.. } catch(typeExc2 e){…} …. finally{…..}

Χειρισμός exceptions try-catch Στο try { } γράφουμε τις εντολές που μπορεί να πετάξουν κάποιο exception το οποίο το περιγράφουμε στο catch. Στο catch λέμε στον compiler τι να κάνει και μετά που θα προκύψει ένα exception. Η λειτουργία του προγράμματος δεν σταματά αλλά συνεχίζει κανονικά. Υπάρχουν πολλών ειδών exception. Μπορούμε να χειριστούμε το κάθε είδος ξεχωριστά. Αυτό σημαίνει ότι μπορούμε να έχουμε πολλά μπλοκ catch μετά από κάθε μπλοκ try.

Χειρισμός exceptions try-catch Όταν συμβεί μια εξαίρεση σε κάποια εντολή στο μπλοκ try{..} τότε σταματάει η εκτέλεση, ο έλεγχος θα υπεπηδήσει όλες τις υπόλοιπες ετολές του try και θα φτάσει στο πρώτο μπλοκ catch το οποίο έχει παράμετρος η οποία ταιργιάζει με την εξαίρεση που δημιουργήθηκε. Αυτό σημαίνει ότι θα εκτελεστεί το μπλοκ του catch το οποίο έχει ως παράμετρο αντικείμενο της ίδιας κλάσης ή υπερκλάσης με το αντικείμενο της εξαίρεσης που δημιουργήθηκε. Μετά την εκτέλεση του αντιστοίχου μπλοκ του catch η εκτέλεση του προγράμματος συνεχίζει μετά το τέλος της εντολής try-catch

Χειρισμός exceptions try-catch Finally: αυτό το μπλοκ εκτελείται πάντα. Περιέχει εντολές όπως κλείσιμο αρχείων, αποσύνδεση από βάση δεδομένωνκτλ. Αυτό το μπλοκ δεν είναι απαραίτητο. Το μπλοκ αυτό εκτελείται ακόμα και αν εκτελεστεί ένα catch.

Χειρισμός exceptions try-catch Προσοχή όταν θέλουμε να χειριστούμε εξαιρέση άπό τις οποίες η μια ανήκει σε υποκλάση και η άλλη σε υπερκλάση τότε: - πρέπει το catch που αναφέρεται στην υποκλάσης πρέπει να είναι πρώτα από αυτό της υπερκλάσης π.χ try{….} catch(FileNotFoundException e){….} catch(IOException e){……….}

Χειρισμός exceptions try-catch void readInt(BufferedReader in,int [] numbers) { try{ String input = stdin.readLine();    int number = Integer.parseInt( input ); } catch ( IOException e ) { System.out.println(e); System.out.println("Unable to finish adding data.");