Εξαιρέσεις στην Java EXCEPTIONS IN JAVA

Σχετικά έγγραφα
Χειρισμός Εξαιρέσεων EXCEPTIONS IN JAVA

Πρόγραµµα 9.1 Πέρασµα δεδοµένων στην µνήµη

Χειρισµός Σφαλµάτων. Γρηγόρης Τσουµάκας. Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης. Έκδοση:

Αντικειμενοστρεφής Προγραμματισμός

6. Εξαιρέσεις στη γλώσσα Java

ΕΞΑΙΡΕΣΕΙΣ. Εξαιρέσεις προκαλούνται. από το σύστηµα. από το πρόγραµµα

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 9 : ΕΞΑΙΡΕΣΕΙΣ ΚΑΙ Ο ΧΕΙΡΙΣΜΟΣ ΤΟΥΣ

Προγραμματισμός ΙΙ (Java) 4. Διαχείριση εξαιρέσεων

Εξαιρέσεις (Exceptions) Λάθη (Errors) Χειρισμός των Εξαιρέσεων (Exception Handling) Assertions

Οντοκεντρικός Προγραμματισμός

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 10: Exceptions handling (Χειρισμός εξαιρέσεων)

Εξαιρέσεις. try, catch, finally, throw, throws

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εξαιρέσεις

Ειδικά Θέματα Προγραμματισμού

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιαχείριση Εξαιρέσεων. Εισαγωγή στη ιαχείριση Εξαιρέσεων

ΕΠΛ233 ΕΞΑΙΡΕΣΕΙΣ στη JAVA

Εξαιρέσεις (στη Java)

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιδάσκων ηµήτριος Κατσαρός, Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας

Εξαιρέσεις στη Java. Περιεχόμενα. Κάποιες προκαθορισμένες ρ εξαιρέσεις. Κωστής Σαγώνας

Αντικειµενοστρεφής Προγραµµατισµός

Αντικειμενοστραφής Προγραμματισμός

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 133: ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΕΡΓΑΣΤΗΡΙΟ 3 Javadoc Tutorial

Αντικειμενοστρεφής Προγραμματισμός

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εξαιρέσεις

Οντοκεντρικός Προγραμματισμός

Βασίλης Χριστοφίδης Επαναληπτική Εξέταση (3 ώρες) Ηµεροµηνία: 21 Σεπτεµβρίου 2012

Διάλεξη 5: Κλάσεις και Αντικείμενα. Διδάσκων: Παναγιώτης Ανδρέου

Διδάσκων: Παναγιώτης Ανδρέου

Προγραμματισμός Ι. Πίνακες, Δείκτες, Αναφορές και Δυναμική Μνήμη. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Κλάσεις στη Java. Παύλος Εφραιμίδης. Java Κλάσεις στη Java 1

java.lang Class Throwable

Συντακτικά λάθη, λάθη εκτέλεσης, Λογικά λάθη

Εξαιρέσεις (στη Java)

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας

Εξαιρέσεις (στη Java)

Εξαιρέσεις (στη Java) Vincent van Gogh, Irises, 1889

Εξαιρέσεις Εισαγωγή. Εξαιρέσεις. ηµήτρης Λεβεντέας

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

Εισαγωγή σε αντικειμενοστραφή concepts. Και λίγη C#

Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων. Εξάμηνο 7 ο

Κλάσεις στη Java. Στοίβα - Stack. Δήλωση της κλάσης. ΗκλάσηVector της Java. Ηκλάση Stack

Δομές Δεδομένων & Ανάλυση Αλγορίθμων. 3ο Εξάμηνο. Ουρά (Queue) Υλοποίηση της με τη βοήθεια πίνακα.

Εισαγωγή στη γλώσσα προγραμματισμού JAVA. Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

2.1. Εντολές Σχόλια Τύποι Δεδομένων

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java II

(C) 2010 Pearson Education, Inc. All rights reserved.

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #4 ο : Αποσφαλμάτωση (debugging), μετατροπές

Διάλεξη 14: Εξαιρέσεις (Exceptions) Διδάσκων: Παναγιώτης Ανδρέου

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ. Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης

ΣΕΜΙΝΑΡΙΟ JAVA. 5 η ιάλεξη

Υπερφόρτωση Μεθόδων και Πέρασμα Ορισμάτων

Abstract classes, Interfaces ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA

ιαδικτυακές Εφαρµογές Πραγµατικού Χρόνου µε Java

Αρχές Τεχνολογίας Λογισμικού Εργαστήριο

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 22/11/07

Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής T.E.I. ΘΕΣΣΑΛΟΝΙΚΗΣ

Διάλεξη Εισαγωγή στη Java, Μέρος B

Κωστής Σαγώνας Πιάσιμο εξαιρέσεων (catching exceptions) Ρίψη εξαιρέσεων (throwing exceptions) Η πρόταση finally

public void printstatement() { System.out.println("Employee: " + name + " with salary: " + salary);

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #4 ο : Αποσφαλμάτωση (debugging), μετατροπές

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III

ιαδικτυακές Εφαρµογές

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 6/5/2006

8. Μέθοδοι (Methods)

14. Διαχείριση σφαλμάτων (Exception Handling)

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java II

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

Προγραμματισμός Υπολογιστών με C++

NATIONAL & KAPODISTRIAN UNIVERSITY OF ATHENS. Διαχείριση Δικτύων. Nikolas Bompetsis

Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών

Αντικειμενοστρεφής Προγραμματισμός

Το πρόγραμμα HelloWorld.java. HelloWorld. Κλάσεις και Αντικείμενα (2) Ορισμός μιας Κλάσης (1) Παύλος Εφραιμίδης pefraimi <at> ee.duth.

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

Εξαιρέσεις (στη Java)

Κλάσεις και Αντικείµενα

Περιεχόµενα. 1 Εισαγωγή στις οµές εδοµένων 3. 2 Στοίβα (Stack) 5

ΗΥ252 Πρόοδος 24 Νοεμβρίου 2012 Σελίδα 2 από 8

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Αντικειμενοστρεφής Προγραμματισμός

Εισαγωγή στη JAVA. Εισαγωγή στη Java. Η Java είναι δημιούργημα της SUN MICROSYSTEMS.

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα

Oι βασικές πράξεις (λειτουργίες) που ορίζονται για τον τύπο στοίβα αναφέρονται παρακάτω:

Κεφάλαιο 1. Νήματα (Threads). Time Sharing

Εξαιρέσεις (στη Java)

Εισαγωγή στον Προγραμματισμό

Λειτουργικά Συστήματα. Εισαγωγή

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων

άσκηση Hide UI Elements 7.2 Try and Catch

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα

Transcript:

Εξαιρέσεις στην Java EXCEPTIONS IN JAVA

Τι είναι μια εξαίρεση Έστω το κάτωθι τμήμα κώδικα: int age = Integer.parseInt(input); Προφανώς αναμένουμε έναν αριθμό (ακέραιο) από το χρήστη που αντιπροσωπεύει μια έγκυρη τιμή ηλικίας Θεωρήστε ωστόσο τις παρακάτω πιθανότητες: 1. Αν ο χρήστης πληκτρολογήσει ένα $ αντί του 4? 2. Αν ο χρήστης εισάγει ένα δεκαδικό ψηφίο? 3. Αν κρατήσει πατημένο το πλήκτρο 3 για πολύ και εισαχθεί ένας πολύ μεγάλος αριθμός? Δεν αναμένουμε συνθήκες όπως αυτές Ωστόσο συμβαίνουν!! 2

Τι είναι μια εξαίρεση Ορισμένα πράγματα μπορεί να εξελιχθούν με λάθος τρόπο κατά τη διάρκεια της εκτέλεσης και δεν μπορούν να ανιχνευθούν κατά τη διάρκεια της μεταγλώττισης Ένα άλλο παράδειγμα: απόπειρα διαίρεσης με το 0 Από την πλευρά του compiler δεν υπάρχει κανένα πρόβλημα με τις αντίστοιχες εντολές και τα προβλήματα θα προκύψουν μόνο κατά την εκτέλεση του προγράμματος Στο σημείο αυτό «ενεργοποιείται ένας συναγερμός» και η Java προσπαθεί να «παράγει μια εξαίρεση» υποδηλώνοντας ότι κάτι αντικανονικό έχει συμβεί. 3

Παράδειγμα public static void main(string[] args) { Stack stack = new Stack(); stack.push("nick"); stack.push("bob"); System.out.println(stack.pop()); System.out.println(stack.pop()); System.out.println(stack.pop()); System.out.println("This statement will not be printed"); 4

Ορολογία: Actors and Actions Operation - Λειτουργία Μια μέθοδος που μπορεί να παράγει (raise) μια εξαίρεση. Invoker Μια μέθοδος που καλεί λειτουργίες και χειρίζεται τις εξαιρέσεις που προκύπτουν. Exception Μια ακριβής και πλήρης περιγραφή ενός αντικανονικού γεγονότος. Πρόκειται για αντικείμενα στη Java. Raise (Παραγωγή Εξαίρεσης) Αποστολή μιας εξαίρεσης από την operation στον invoker. (Καλείται throw στην Java). Handle - Χειρισμός Η απόκριση του Invoker στην εξαίρεση, καλείται catch στη Java. 5

Ορισμένοι τύποι εξαιρέσεων Arithmetic Exception NullPointerException πρόβλημα κατά την αποτίμηση αριθμητικής παράστασης, όπως η διαίρεση με το μηδέν κλήση μεθόδου δια μέσου αναφοράς που έχει τιμή null IndexOutOfBoundsException ένας δείκτης πίνακα έχει βρεθεί εκτός των ορίων της δομής EOFException εντοπίστηκε σύμβολο τέλους αρχείου 6

Εξαιρέσεις Ένα πρόγραμμα μπορεί να αντιμετωπίσει μια εξαίρεση με τρεις τρόπους 1. να την αγνοήσει 2. να την χειριστεί στο σημείο που παράγεται 3. να την χειριστεί σε κάποιο άλλο σημείο του προγράμματος 7

Κατηγοριοποίηση Εξαιρέσεων Java Unchecked Exceptions Δεν είναι υποχρεωτικό να χειριστούμε αυτούς τους τύπους εξαιρέσεων. Runtime exceptions can be generated by methods or by the JVM itself. Errors are generated from deep within the JVM, and often indicate a truly fatal state. Checked Exceptions Πρέπει είτε να «συλληφθούν» (caught) από μια μέθοδο ή να δηλωθούν στην υπογραφή της 8

Keywords for Java Exceptions throws Περιγράφει τις εξαιρέσεις που μπορεί να παραχθούν από μια μέθοδο. throw Παραγωγή μιας εξαίρεσης και προώθηση στον πρώτο διαθέσιμο χειριστή στην στοίβα κλήσεων. try Υποδηλώνει την αρχή ενός block που σχετίζεται με ένα σύνολο χειριστών εξαιρέσεων (μπορεί να παράγει εξαιρέσεις). catch Αν το block που περιλαμβάνεται σε ένα try παράγει μια εξαίρεση του αντίστοιχου τύπου, η ροή του ελέγχου μεταφέρεται εδώ. finally Καλείται όταν τερματίζεται το τμήμα try και μετά από οποιοδήποτε τυχόν χειρισμό στο τμήμα catch. 9

Try catch (finally) TRY: ορίζει το μπλοκ κώδικα που μπορεί να προκαλέσει exception. Το μπλοκ αυτό ονομάζεται guarded region. Κάθε μπλοκ try πρέπει να περιέχει κάτι από τα παρακάτω: Τουλάχιστον ένα catch block αλλά μπορεί να έχει και περισσότερα Μόνο ένα finally block catch blocks και ένα finally block Τα catch blocks προηγούνται του finally block FINALLY: περιέχει κώδικα που εκτελείται πάντα είτε προκλήθηκε εξαίρεση, είτε όχι. Π.χ. κλείσιμο αρχείων, συνδέσεων με ΒΔ, network sockets, κτλ. Μόνο 1 finally block ανά εντολή try

Γενική σύνταξη public void setproperty(string p_strvalue) throws NullPointerException { if (p_strvalue == null) { throw new NullPointerException(... ); public void mymethod(string text) { MyClass oclass = new MyClass(); try { oclass.setproperty(text); oclass.dosomework(); catch (NullPointerException npe) { System.err.println( Unable to set property: +npe.tostring()); finally { oclass.cleanup();

Example public void foo() { try { /* marks the start of a try-catch block */ int a[] = new int[2]; a[4] = 1; /* causes a runtime exception due to the index */ catch (ArrayIndexOutOfBoundsException e) { System.out.println("exception: " + e.getmessage()); e.printstacktrace(); /* This code also compiles, but throws an exception at runtime! It is both less obvious and more common (an offby-one-error) */ public int[] bar() { int a[] = new int[2]; for (int x = 0; x <= 2; x++) { a[x] = 0; return a; 12

Πλεονεκτήματα των Exceptions Από The Java Tutorials http://docs.oracle.com/javase/tutorial/essential/exceptions/advantages.html Πλεονέκτημα 1: Διαχωρισμός κώδικα χειρισμού σφαλμάτων από «κανονικό» κώδικα (αποφυγή spaghetti code) 13

Πλεονεκτήματα των Exceptions Έστω το παρακάτω τμήμα κώδικα readfile { open the file; determine its size; allocate that much memory; read the file into memory; close the file; Ο κώδικας φαίνεται αρκετά «απλός» και καθαρός αλλά αγνοεί τα παρακάτω πιθανά σφάλματα: -Τι θα συμβεί αν το αρχείο δεν μπορεί να ανοίξει? -Τι θα συμβεί αν το μήκος του αρχείου δεν μπορεί να προσδιοριστεί? -Τι θα συμβεί εάν δεν μπορεί να δεσμευθεί η απαραίτητη μνήμη? -Τι θα συμβεί εάν η ανάγνωση του αρχείου αποτύχει? -Τι θα συμβεί εάν το αρχείο δεν μπορεί να κλείσει? 14

Πλεονεκτήματα των Exceptions Θα μπορούσαμε να γράψουμε κώδικα για τον χειρισμό και την αναφορά όλων των πιθανών προβλημάτων ως εξής: errorcodetype readfile { initialize errorcode = 0; open the file; if (thefileisopen) { determine the length of the file; if (gotthefilelength) { allocate that much memory; if (gotenoughmemory) { read the file into memory; if (readfailed) { errorcode = -1; else { errorcode = -2; else { errorcode = -3; close the file; if (thefiledidntclose && errorcode == 0) { errorcode = -4; else { errorcode = -5; return errorcode; Υπάρχει τόσος κώδικας για τον χειρισμό των σφαλμάτων που οι αρχικές 7 γραμμές κώδικα έχουν «χαθεί» 15

Πλεονεκτήματα των Exceptions Ο μηχανισμός των εξαιρέσεων επιτρέπει να διατηρήσουμε ανέπαφη τη λογική του κυρίως κώδικα και να χειριστούμε τα σφάλματα σε άλλο σημείο: readfile { try { open the file; determine its size; allocate that much memory; read the file into memory; close the file; catch (fileopenfailed) { dosomething; catch (sizedeterminationfailed) { dosomething; catch (memoryallocationfailed) { dosomething; catch (readfailed) { dosomething; catch (fileclosefailed) { dosomething; 16

Πλεονεκτήματα των Exceptions Πλεονέκτημα 2: «Προώθηση» των σφαλμάτων προς τα πάνω στην στοίβα κλήσεων Έστω ότι η readfile είναι η 4 η μέθοδος στη σειρά σε μια ακολουθία κλήσεων μεθόδων από το κυρίως πρόγραμμα (method1->method2->method3->readfile Έστω ότι η method1 είναι η μόνη μέθοδος που ενδιαφέρεται για τα σφάλματα που μπορεί να συμβούν στην readfile Η συμβατική αντιμετώπιση θα ήταν 17

Πλεονεκτήματα των Exceptions method1 { errorcodetype error; error = call method2; if (error) doerrorprocessing; else proceed; errorcodetype method2 { errorcodetype error; error = call method3; if (error) return error; else proceed; errorcodetype method3 { errorcodetype error; error = call readfile; if (error) return error; else proceed; 18

Πλεονεκτήματα των Exceptions Αντιμετώπιση με τον μηχανισμό των exceptions method1 { try { call method2; catch (exception e) { doerrorprocessing; method2 throws exception { call method3; method3 throws exception { call readfile; readfile throws exception {... ; 19

Πλεονεκτήματα των Exceptions Πλεονέκτημα 3: Κατηγοριοποίηση και Διαφοροποίηση βάσει τύπου των σφαλμάτων Όλες οι εξαιρέσεις είναι αντικείμενα κλάσεων Μια μέθοδος μπορεί να γράψει κώδικα για τον χειρισμό μιας συγκεκριμένης κατηγορίας σφαλμάτων catch (FileNotFoundException e) {... Χειρισμός μόνο σφαλμάτων που σχετίζονται με αδυναμία εύρεσης του αρχείου catch (ΙΟException e) {... Χειρισμός όλων των I/O σφαλμάτων ανεξαρτήτως του ειδικού τους τύπου 20

Java Exception Hierarchy Error Exception Ασυνήθιστες καταστάσεις που δεν προκαλούνται από λάθη του κώδικα αλλά γενικότερης φύσης προβλήματα που μπορεί να συμβούν (π.χ. JVM running out of memory). Δε μπορούμε να επανακάμψουμε με κάποιο τρόπο από ένα Error και δεν χρειάζεται να γράψουμε κώδικα για να το διαχειριστούμε. Πρακτικά τα Errors δεν είναι εξαιρέσεις (δεν προέρχονται από την κλάση Exception) Δεν αφορά κάτι που είναι αποτέλεσμα προγραμματιστικού λάθους αλλά το ότι δεν είναι διαθέσιμος κάποιος πόρος ή κάποια άλλη συνθήκη που είναι απαραίτητη για την ορθή εκτέλεση του κώδικα. Π.χ. αν ο κώδικας πρέπει να συνδεθεί με κάποια άλλη εφαρμογή ή άλλο υπολογιστή που δεν ανταποκρίνεται. java.lang.throwable java.lang.error java.lang.exception java.lang.threaddeath java.lang.runtimeexception java.io.ioexception java.lang.nullpointerexception java.lang.illegalargumentexception java.io.filenotfoundexception

Δημιουργία δικής σας exception class /* You should extend RuntimeException to create an unchecked exception, or Exception to create a checked exception. */ class MyException extends Exception { /* This is the common constructor. It takes a text argument. */ public MyException(String p_strmessage) { super(p_strmessage); /* A default constructor is also a good idea! */ public MyException () { super();