Τα σφάλματα στην java χωρίζονται σε δύο κατηγορίες
1. Εξαιρέσεις : Συμβάντα που σηματοδοτούν μια ασυνήθιστη περίσταση, η οποία συνέβη κατά την εκτέλεση ενός προγράμματος .
2. Σφάλματα : Συμβάντα που επισημαίνουν ότι ο διερμηνευτής της java αντιμετωπίζει προβλήματα που ίσως δεν σχετίζονται με το πρόγραμμά σας όπως γκάφες τυπογραφικά λάθη, λάθη σύνταξης κτλ.
Οι εξαιρέσεις στη Java είναι αντικείμενα τα οποία ανήκουν στην ακόλουθη ιεραρχία των τάξεων (του πακέτου java.lang):
Μία μέθοδος μπορεί να προκαλέσει μία νέα εξαίρεση, χρησιμοποιώντας την εντολή throw. Η εντολή αυτή έχει την ακόλουθη σύνταξη:
throw αντικείμενο_εξαίρεσης;
Επειδή η throw πρέπει να "πετάξει" ένα αντικείμενο εξαίρεσης είναι πολύ συνηθισμένο στα προγράμματα να τη συναντάμε με την ακόλουθη μορφή:
throw new κατασκευαστής_τάξης_εξαίρεσης();
Για παράδειγμα, όπως στην ακόλουθη εντολή: throw new ArrayIndexOutOfBoundsException();
Όταν μία μέθοδος έχει στο σώμα της μία εντολή throw και η τάξη της εξαίρεσης που προκαλείται από αυτή δεν είναι υποτάξη της τάξης RuntimeException, θα πρέπει να δηλώσει ότι μπορεί να προκαλέσει αυτή την εξαίρεση. Ένα παράδειγμα είναι το παρακάτω:
public void setter(int index, Account a) throws ArrayIndexOutOfBoundsException
{
//an o index einai metaxy 0 kai MAX_ACCOUNTS
//vale sti thesi index toy accounts ton a
if (index>=0 && index <MAX_ACCOUNTS)
accounts[index] = a;
//diaforetika prokalese mia exairesi deikti ektos oriwn
else
throw new ArrayIndexOutOfBoundsException();
}
Οι εξαιρέσεις προκύπτουν όταν γράφετε ένα πρόγραμμα στη java που μεταγλωττίζεται με επιτυχία αλλά αντιμετωπίζει πρόβλημα όταν εκτελείται. Για παράδειγμα έχουμε τον παρακάτω κώδικα
String [] greek={“Alpha”, “Beta”, “Gamma”};
System.out.println(greek[3]);
Ζητάμε να τυπωθεί το περιεχόμενο της θέση 3 του πίνακα, πράγμα το οποίο δεν υπάρχει. Μην ξεχνάτε ότι το πρώτο στοιχείο του πίνακα είναι στη θέση 0, το δεύτερο στην θέση 1 και το τρίτο στην θέση 2. Κατά την εκτέλεση του προγράμματος αυτού θα έχουμε το παρακάτω μήνυμα:
Exception in thread “main” java.lang.ArrayIndexOutBoundsException:3 At SampleProgram.main(SampleProgram.java:4) και το πρόγραμμα φυσικά σταματά.
Ας δούμε όμως πως μπορούμε να χειριστούμε τις εξαιρέσεις με ένα απλό πρόγραμμα στην java.
public class Calculator{
public static void main(String[] arguments){
float sum=0;
for(int i=0;i<arguments.length;i++){
try{
sum=sum+Float.parseFloat(arguments[i]);
}
catch (NumberFormatExcepition e){
System.out.println(arguments[i] + “ δεν είναι αριθμός.”);
}
}
System.out.println(“Το άθρισμα των αριθμών είναι:” +sum);
}
}
Σε περίπτωση που ο χρήστης δώσει ως είσοδο έναν μη αριθμητικό στοιχείο π.χ. “3x” τότε πυροδοτείται η εξαίρεση NumberFormatExcepition e η οποία εμφανίζει μήνυμα σφάλματος.
Όταν χειριζόμαστε πολλές εξαιρέσεις σε ένα πρόγραμμα είναι φυσικό να θέλουμε να κάνουμε κάτι στο τέλος του μπλοκ ανεξάρτητα αν θα προκύψει εξαίρεση ή όχι.
Αυτό το επιτυγχάνουμε με την βοήθεια ενός μπλοκ try – catch – finally. Η σύνταξη του είναι η εξής:
try{
//Προτάσεις που μπορεί να προκαλέσουν εξαίρεση
}
catch(Exception e){
//Τι πρέπει να γίνει όταν συμβεί η εξαίρεση
}
…. //Μπορούμε να έχουμε παραπάνω από ένα catch
finally{
//Προτάσεις που θα εκτελεστούν σε κάθε περίπτωση
}
Οι προτάσεις μέσα στο τμήμα του finally εκτελούνται μετά από όλα τα άλλα στοιχεία του μπλοκ, ακόμα κι αν συμβεί μια εξαίρεση.
Το βρήκατε ενδιαφέρων αυτό το άρθρο?
Δημοσίευση σχολίου