Συνιστάται, 2024

Επιλογή Συντάκτη

Διαφορά μεταξύ σφάλματος και εξαίρεσης στην Java

Το "Throwable" ενεργεί ως η ρίζα της ιεραρχίας σφαλμάτων και εξαιρέσεων της Java. Το "σφάλμα" είναι μια κρίσιμη κατάσταση που δεν μπορεί να αντιμετωπιστεί από τον κώδικα του προγράμματος. "Εξαίρεση" είναι η εξαιρετική κατάσταση που μπορεί να αντιμετωπιστεί από τον κώδικα του προγράμματος. Η σημαντική διαφορά μεταξύ του σφάλματος και της εξαίρεσης είναι ότι ένα σφάλμα προκαλείται εξαιτίας της έλλειψης πόρων του συστήματος και μια εξαίρεση προκαλείται εξαιτίας του κωδικού σας. Ας μελετήσουμε άλλες διαφορές μεταξύ σφάλματος και εξαίρεσης μαζί με ένα διάγραμμα σύγκρισης.

Συγκριτικό διάγραμμα

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

Ορισμός του σφάλματος

Το " Σφάλμα " είναι μια υποκατηγορία της ενσωματωμένης κλάσης "Throwable". Τα σφάλματα είναι οι κρίσιμες συνθήκες που συμβαίνουν λόγω της έλλειψης των πόρων του συστήματος και δεν μπορούν να αντιμετωπιστούν από τον κώδικα του προγράμματος. Τα σφάλματα δεν μπορούν να ανακτηθούν με κανένα τρόπο επειδή δεν μπορούν να δημιουργηθούν, να ριχτούν, να πιαστούν ή να απαντηθούν. Τα σφάλματα οφείλονται στην καταστροφική αποτυχία που συνήθως δεν μπορεί να χειριστεί το πρόγραμμά σας.

Τα σφάλματα είναι πάντα ανεξέλεγκτου τύπου, καθώς ο μεταγλωτιστής δεν έχει καμία γνώση σχετικά με την εμφάνισή του. Σφάλματα συμβαίνουν πάντα στο περιβάλλον χρόνου εκτέλεσης. Το σφάλμα μπορεί να εξηγηθεί με τη βοήθεια ενός παραδείγματος, το πρόγραμμα έχει ένα σφάλμα υπερχείλισης στοίβας, σφάλμα μνήμης ή σφάλμα συστήματος, αυτό το είδος σφάλματος οφείλεται στο σύστημα. Ο κώδικας δεν είναι υπεύθυνος για τέτοια σφάλματα. Η συνέπεια της εμφάνισης του σφάλματος είναι ότι το πρόγραμμα τερματίζεται ασυνήθιστα.

Ορισμός εξαίρεσης

Η "εξαίρεση" είναι επίσης μια υποκατηγορία της ενσωματωμένης κατηγορίας "Throwable". Εξαιρέσεις είναι οι εξαιρετικές συνθήκες που συμβαίνουν σε ένα περιβάλλον χρόνου εκτέλεσης. Οι περισσότερες φορές οι εξαιρέσεις οφείλονται στον κώδικα του προγράμματός μας. Αλλά εξαιρέσεις μπορούν να αντιμετωπιστούν από το ίδιο το πρόγραμμα, καθώς οι εξαιρέσεις είναι ανακτήσιμες. Εξαιρέσεις αντιμετωπίζονται χρησιμοποιώντας τρεις λέξεις-κλειδιά "δοκιμάστε", "σύλληψη", "ρίψη". Η σύνταξη της εξαίρεσης είναι:

 δοκιμάστε {// γράψτε τον κωδικό σας εδώ} Catch (τύπος εξαίρεσης) {// γράψτε τον κωδικό σας εδώ} 

Στον παραπάνω κώδικα, ο κώδικας που είναι γραμμένος στη δοκιμαστική ομάδα είναι ο κώδικας που θέλετε να παρακολουθήσετε για την εξαίρεση. Εάν η εξαίρεση εμφανίζεται σε ένα μπλοκ δοκιμής, ρίχνεται χρησιμοποιώντας τη λέξη-κλειδί "ρίψη". Η εξαίρεση που απορρίπτεται μπορεί να αλιευθεί από το μπλοκ "catch" του παραπάνω κώδικα. Ο "τύπος εξαίρεσης" είναι ο τύπος της εξαίρεσης που έχει συμβεί.

Με απλά λόγια μπορούμε να πούμε ότι τα λάθη που προέκυψαν λόγω του ακατάλληλου κώδικα ονομάζονται εξαιρέσεις. Για παράδειγμα, εάν δεν έχει βρεθεί μια ζητούμενη κατηγορία ή δεν έχει βρεθεί μια ζητούμενη μέθοδος. Αυτά τα είδη εξαιρέσεων οφείλονται στον κώδικα του προγράμματος. το σύστημα δεν είναι υπεύθυνο για τέτοιου είδους εξαιρέσεις. Οι εξαιρέσεις ταξινομούνται ως "ελεγμένες" και "μη ελεγμένες". Οι μη ελεγμένες εξαιρέσεις δεν είναι στη γνώση του μεταγλωττιστή καθώς εμφανίζονται κατά τη διάρκεια εκτέλεσης ενώ ο μεταγλωττιστής έχει τις γνώσεις σχετικά με τις εξακριβωμένες εξαιρέσεις όπως είναι γνωστό στον μεταγλωττιστή κατά τη διάρκεια της μεταγλώττισης.

Βασικές διαφορές σφάλματος και εξαίρεσης

  1. Παρουσιάζεται σφάλμα μόνο όταν οι πόροι του συστήματος είναι ανεπαρκείς, ενώ μια εξαίρεση προκαλείται αν κάποιο πρόβλημα έχει κάποιο πρόβλημα.
  2. Ένα σφάλμα δεν μπορεί ποτέ να ανακτηθεί, ενώ μια εξαίρεση μπορεί να ανακτηθεί με την προετοιμασία του κώδικα για την αντιμετώπιση της εξαίρεσης.
  3. Ένα σφάλμα δεν μπορεί ποτέ να αντιμετωπιστεί, αλλά μια εξαίρεση μπορεί να αντιμετωπιστεί από τον κώδικα εάν ο κώδικας που πετάει μια εξαίρεση γράφεται μέσα σε ένα δοκιμαστικό και μπλοκ αλίευσης.
  4. Εάν παρουσιαστεί κάποιο σφάλμα, το πρόγραμμα τερματίζεται μη φυσιολογικά. Από την άλλη πλευρά, αν υπάρξει εξαίρεση, το πρόγραμμα θα ρίξει μια εξαίρεση και θα χειριστεί χρησιμοποιώντας το μπλοκ δοκιμής και αλίευσης.
  5. Τα σφάλματα είναι ανεξέλεγκτου τύπου, δηλαδή το σφάλμα δεν είναι γνωστό στους μεταγλωτιστές, ενώ μια εξαίρεση ταξινομείται ως ελεγμένη και ανεξέλεγκτη.
  6. Τα σφάλματα ορίζονται στο πακέτο java.lang.Error, ενώ μια εξαίρεση ορίζεται ως java.lang.Exception.

Συμπέρασμα:

Εξαιρέσεις είναι τα αποτελέσματα των σφαλμάτων που έγιναν κατά την κωδικοποίηση του προγράμματος και τα σφάλματα είναι αποτέλεσμα της ακατάλληλης λειτουργίας του συστήματος

Top