Συγκριτικό διάγραμμα
Βάση σύγκρισης | Λάθος | Εξαίρεση |
---|---|---|
Βασικός | Παρουσιάζεται σφάλμα λόγω έλλειψης πόρων συστήματος. | Μια εξαίρεση προκαλείται εξαιτίας του κώδικα. |
Ανάκτηση | Ένα σφάλμα είναι ανεπανόρθωτο. | Μια εξαίρεση είναι ανακτήσιμη. |
Λέξεις κλειδιά | Δεν υπάρχει κανένας τρόπος αντιμετώπισης σφάλματος από τον κώδικα του προγράμματος. | Οι εξαιρέσεις αντιμετωπίζονται χρησιμοποιώντας τρεις λέξεις-κλειδιά "δοκιμάστε", "πιάστε" και "ρίξτε". |
Συνέπειες | Καθώς εντοπίζεται το σφάλμα, το πρόγραμμα τερματίζεται ασυνήθιστα. | Κατ 'εξαίρεση ανιχνεύεται, ρίχνεται και αλιεύεται από τις λέξεις-κλειδιά "throw" και "catch" αντιστοίχως. |
Τύποι | Τα σφάλματα ταξινομούνται ως μη ελεγμένος τύπος. | Οι εξαιρέσεις ταξινομούνται ως ελεγχόμενοι ή ανεξέλεγκτοι τύποι. |
Πακέτο | Στην Java, τα σφάλματα ορίζονται ως πακέτο "java.lang.Error". | Στην Java, οι εξαιρέσεις ορίζονται στο "java.lang.Exception". |
Παράδειγμα | OutOfMemory, StackOverFlow. | Έλεγχος εξαιρέσεων: NoSuchMethod, ClassNotFound. Μη ελεγμένες εξαιρέσεις: NullPointer, IndexOutOfBounds. |
Ορισμός του σφάλματος
Το " Σφάλμα " είναι μια υποκατηγορία της ενσωματωμένης κλάσης "Throwable". Τα σφάλματα είναι οι κρίσιμες συνθήκες που συμβαίνουν λόγω της έλλειψης των πόρων του συστήματος και δεν μπορούν να αντιμετωπιστούν από τον κώδικα του προγράμματος. Τα σφάλματα δεν μπορούν να ανακτηθούν με κανένα τρόπο επειδή δεν μπορούν να δημιουργηθούν, να ριχτούν, να πιαστούν ή να απαντηθούν. Τα σφάλματα οφείλονται στην καταστροφική αποτυχία που συνήθως δεν μπορεί να χειριστεί το πρόγραμμά σας.
Τα σφάλματα είναι πάντα ανεξέλεγκτου τύπου, καθώς ο μεταγλωτιστής δεν έχει καμία γνώση σχετικά με την εμφάνισή του. Σφάλματα συμβαίνουν πάντα στο περιβάλλον χρόνου εκτέλεσης. Το σφάλμα μπορεί να εξηγηθεί με τη βοήθεια ενός παραδείγματος, το πρόγραμμα έχει ένα σφάλμα υπερχείλισης στοίβας, σφάλμα μνήμης ή σφάλμα συστήματος, αυτό το είδος σφάλματος οφείλεται στο σύστημα. Ο κώδικας δεν είναι υπεύθυνος για τέτοια σφάλματα. Η συνέπεια της εμφάνισης του σφάλματος είναι ότι το πρόγραμμα τερματίζεται ασυνήθιστα.
Ορισμός εξαίρεσης
Η "εξαίρεση" είναι επίσης μια υποκατηγορία της ενσωματωμένης κατηγορίας "Throwable". Εξαιρέσεις είναι οι εξαιρετικές συνθήκες που συμβαίνουν σε ένα περιβάλλον χρόνου εκτέλεσης. Οι περισσότερες φορές οι εξαιρέσεις οφείλονται στον κώδικα του προγράμματός μας. Αλλά εξαιρέσεις μπορούν να αντιμετωπιστούν από το ίδιο το πρόγραμμα, καθώς οι εξαιρέσεις είναι ανακτήσιμες. Εξαιρέσεις αντιμετωπίζονται χρησιμοποιώντας τρεις λέξεις-κλειδιά "δοκιμάστε", "σύλληψη", "ρίψη". Η σύνταξη της εξαίρεσης είναι:
δοκιμάστε {// γράψτε τον κωδικό σας εδώ} Catch (τύπος εξαίρεσης) {// γράψτε τον κωδικό σας εδώ}
Στον παραπάνω κώδικα, ο κώδικας που είναι γραμμένος στη δοκιμαστική ομάδα είναι ο κώδικας που θέλετε να παρακολουθήσετε για την εξαίρεση. Εάν η εξαίρεση εμφανίζεται σε ένα μπλοκ δοκιμής, ρίχνεται χρησιμοποιώντας τη λέξη-κλειδί "ρίψη". Η εξαίρεση που απορρίπτεται μπορεί να αλιευθεί από το μπλοκ "catch" του παραπάνω κώδικα. Ο "τύπος εξαίρεσης" είναι ο τύπος της εξαίρεσης που έχει συμβεί.
Με απλά λόγια μπορούμε να πούμε ότι τα λάθη που προέκυψαν λόγω του ακατάλληλου κώδικα ονομάζονται εξαιρέσεις. Για παράδειγμα, εάν δεν έχει βρεθεί μια ζητούμενη κατηγορία ή δεν έχει βρεθεί μια ζητούμενη μέθοδος. Αυτά τα είδη εξαιρέσεων οφείλονται στον κώδικα του προγράμματος. το σύστημα δεν είναι υπεύθυνο για τέτοιου είδους εξαιρέσεις. Οι εξαιρέσεις ταξινομούνται ως "ελεγμένες" και "μη ελεγμένες". Οι μη ελεγμένες εξαιρέσεις δεν είναι στη γνώση του μεταγλωττιστή καθώς εμφανίζονται κατά τη διάρκεια εκτέλεσης ενώ ο μεταγλωττιστής έχει τις γνώσεις σχετικά με τις εξακριβωμένες εξαιρέσεις όπως είναι γνωστό στον μεταγλωττιστή κατά τη διάρκεια της μεταγλώττισης.
Βασικές διαφορές σφάλματος και εξαίρεσης
- Παρουσιάζεται σφάλμα μόνο όταν οι πόροι του συστήματος είναι ανεπαρκείς, ενώ μια εξαίρεση προκαλείται αν κάποιο πρόβλημα έχει κάποιο πρόβλημα.
- Ένα σφάλμα δεν μπορεί ποτέ να ανακτηθεί, ενώ μια εξαίρεση μπορεί να ανακτηθεί με την προετοιμασία του κώδικα για την αντιμετώπιση της εξαίρεσης.
- Ένα σφάλμα δεν μπορεί ποτέ να αντιμετωπιστεί, αλλά μια εξαίρεση μπορεί να αντιμετωπιστεί από τον κώδικα εάν ο κώδικας που πετάει μια εξαίρεση γράφεται μέσα σε ένα δοκιμαστικό και μπλοκ αλίευσης.
- Εάν παρουσιαστεί κάποιο σφάλμα, το πρόγραμμα τερματίζεται μη φυσιολογικά. Από την άλλη πλευρά, αν υπάρξει εξαίρεση, το πρόγραμμα θα ρίξει μια εξαίρεση και θα χειριστεί χρησιμοποιώντας το μπλοκ δοκιμής και αλίευσης.
- Τα σφάλματα είναι ανεξέλεγκτου τύπου, δηλαδή το σφάλμα δεν είναι γνωστό στους μεταγλωτιστές, ενώ μια εξαίρεση ταξινομείται ως ελεγμένη και ανεξέλεγκτη.
- Τα σφάλματα ορίζονται στο πακέτο java.lang.Error, ενώ μια εξαίρεση ορίζεται ως java.lang.Exception.
Συμπέρασμα:
Εξαιρέσεις είναι τα αποτελέσματα των σφαλμάτων που έγιναν κατά την κωδικοποίηση του προγράμματος και τα σφάλματα είναι αποτέλεσμα της ακατάλληλης λειτουργίας του συστήματος