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

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

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

Βίντεο: Διαφορά μεταξύ εξαίρεσης και σφάλματος
Βίντεο: Modem vs Router - Ποια είναι η διαφορά; 2024, Ιούλιος
Anonim

Εξαίρεση έναντι Σφάλματος

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

Τι είναι η εξαίρεση;

Η εξαίρεση είναι ένα συμβάν που μπορεί να διαταράξει την κανονική ροή του προγράμματος. Η εξαίρεση του ονόματος προέρχεται από το "εξαιρετικό γεγονός". Η απόρριψη μιας εξαίρεσης είναι η διαδικασία δημιουργίας ενός αντικειμένου εξαίρεσης και παράδοσης του στο σύστημα χρόνου εκτέλεσης. Το αντικείμενο εξαίρεσης δημιουργείται με τη μέθοδο στην οποία προέκυψε η εξαίρεση. Το αντικείμενο εξαίρεσης περιέχει χρήσιμες πληροφορίες όπως ο τύπος και η περιγραφή της εξαίρεσης. Όταν το σύστημα χρόνου εκτέλεσης λάβει το αντικείμενο εξαίρεσης, θα προσπαθήσει να βρει κάποιον για να το χειριστεί μέσα στη στοίβα κλήσεων περνώντας το με την αντίστροφη σειρά (με την οποία κλήθηκαν οι μέθοδοι). Η στοίβα κλήσεων είναι η ταξινομημένη λίστα μεθόδων, οι οποίες κλήθηκαν πριν από τη μέθοδο στην οποία προέκυψε η εξαίρεση. Το σύστημα χρόνου εκτέλεσης είναι επιτυχές εάν βρει μια μέθοδο με έναν χειριστή εξαιρέσεων. Ο χειριστής εξαίρεσης είναι ένα μπλοκ κώδικα που μπορεί επίσημα να χειριστεί την εν λόγω εξαίρεση. Εάν το σύστημα χρόνου εκτέλεσης βρει έναν κατάλληλο χειριστή (δηλαδή ο τύπος εξαίρεσης ταιριάζει με τον τύπο που μπορεί να χειριστεί), θα μεταβιβάσει το αντικείμενο εξαίρεσης στον χειριστή. Αυτό ονομάζεται αλίευση της εξαίρεσης. Ωστόσο, εάν δεν είναι δυνατός ο χειρισμός της εξαίρεσης, το πρόγραμμα θα τερματιστεί. Στην Java, οι εξαιρέσεις κληρονομούνται από την "Throwable class". NullPointerException και ArrayIndexOutOfBoundsException είναι δύο κοινές εξαιρέσεις στην Java.

Τι είναι το σφάλμα;

Ένα σφάλμα είναι μια κατάσταση που μπορεί να θεωρηθεί μη ανακτήσιμη, όπως το πρόγραμμα που απαιτεί ποσότητα μνήμης μεγαλύτερη από αυτή που είναι διαθέσιμη. Αυτά τα σφάλματα δεν μπορούν να αντιμετωπιστούν κατά το χρόνο εκτέλεσης. Εάν παρουσιαστεί σφάλμα, το πρόγραμμα θα τερματιστεί. Στην Java, τα σφάλματα κληρονομούνται από την κλάση Throwable. Τα σφάλματα συνήθως αντιπροσωπεύουν σοβαρά προβλήματα που ο προγραμματιστής (ή η εφαρμογή) δεν πρέπει να προσπαθήσει να συλλάβει. Τα σφάλματα είναι απλώς μη φυσιολογικές συνθήκες, οι οποίες δεν αναμένεται ποτέ να συμβούν υπό κανονικές συνθήκες και επομένως δεν προβλέπονται ποτέ. Για παράδειγμα, τα OutOfMemoryError, StackOverflowError και ThreadDead είναι τέτοια σφάλματα. Οι μέθοδοι δεν πρέπει ποτέ να έχουν χειριστές για σφάλματα.

Ποια είναι η διαφορά μεταξύ Εξαίρεσης και Σφάλματος;

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

Συνιστάται: