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

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

Διαφορά μεταξύ ρίψεων και ριπών στη Java

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

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

Βάση σύγκρισηςπετώρίχνει
ΒασικόςΗ λέξη-κλειδί ρίψεως μεταβιβάζει το αντικείμενο εξαίρεσης που δημιουργήθηκε στη JVM με μη αυτόματο τρόπο.Η λέξη-κλειδί ρίψεων χρησιμοποιείται για να μεταβιβάσει την ευθύνη του χειρισμού εξαιρέσεων στον καλούντα της μεθόδου.
Σύνταξηρίξτε Throwable-instance;return_type method_name (λίστα παραμέτρων) ρίχνει την ExceptionClass_list
{
// σώμα μεθόδου
}}
Ακολουθούμενη απόΗ λέξη-κλειδί ρίψης ακολουθείται από αντικείμενο εξαίρεσης.Η λέξη-κλειδί ρίχνει ακολουθείται από τη λίστα των κλάσεων εξαίρεσης που μπορούν να εμφανιστούν στη μέθοδο.
Αριθμός εξαιρέσεων που ρίχνονταιΗ λέξη-κλειδί ρίψεως μπορεί να ρίξει μια μοναδική παράσταση εξαίρεσηςΗ λέξη-κλειδί ρίχνει μπορεί να δηλώσει πολλαπλές κλάσεις εξαίρεσης που χωρίζονται με κόμμα.

Ορισμός της ρίψης

Η λέξη-κλειδί " throw " χρησιμοποιείται για να παραδώσει χειροκίνητα την παράσταση εξαίρεσης που δημιουργήθηκε στο Java Virtual Machine (JVM). Εάν το "throw" δεν χρησιμοποιείται για να ρίξει μια παράσταση εξαίρεσης και η εξαίρεση εμφανίζεται, τότε το σύστημα χρόνου εκτέλεσης ρίχνει εσωτερικά την εξαίρεση instance στην JVM και το πρόγραμμα τερματίζεται μη φυσιολογικά. Η γενική μορφή της λέξης κλειδιού είναι:

 throw Throwable_instance; 

Πάνω από την Throwable_instance πρέπει να είναι ένα αντικείμενο της κατηγορίας Throwable. Οι πρωταρχικοί τύποι όπως int, float ή char και το μη ρίψιμο παράδειγμα κλάσης δεν μπορούν να πεταχτούν χρησιμοποιώντας λέξη-κλειδί throw.

Ας πάρουμε ένα παράδειγμα για να κατανοήσουμε τη λέξη-κλειδί.

 Δοκιμή κλάσης {Δημόσια στατική κενή κύρια (String [] args) {ρίξει νέα ArithmeticException ("/ από μηδέν"); }} 

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

Τα σημεία που πρέπει να θυμάστε σχετικά με τη λέξη-κλειδί:

  • Προωθεί το αντικείμενο εξαίρεσης με το χέρι στο JVM.
  • Χρησιμοποιείται καλύτερα για τις εξαιρέσεις που ορίζονται από το χρήστη ή εξατομικευμένες εξαιρέσεις.
  • Εάν η μνήμη δεν έχει κατανεμηθεί στο αντικείμενο εξαίρεσης που ρίχνεται από την λέξη-κλειδί, τότε εμφανίζεται μια εξαίρεση εκτέλεσης χρόνου εκτέλεσης, NullPointerException.
  • Η λέξη-κλειδί ρίψης σταματά την εκτέλεση του προγράμματος αμέσως μετά την εμφάνισή του. δεν μπορούμε να γράψουμε άμεσα οποιαδήποτε δήλωση μετά τη δήλωση throw. Εάν γράψουμε οποιοδήποτε κατάστημα αμέσως μετά την εντολή ρίψεως, τότε ο μεταγλωττιστής θα εμφανίσει ένα σφάλμα, μια μη αποδεκτή δήλωση κατά τη διάρκεια της σύνταξης.
  • Μόνο τα αντικείμενα της κατηγορίας Throwable μπορούν να πεταχτούν χρησιμοποιώντας λέξη-κλειδί throw. Αν το αντικείμενο που ρίχτηκε δεν είναι αντικείμενο της κατηγορίας Throwable τότε έχουμε ένα σφάλμα χρόνου μεταγλώττισης "Ασυμβίβαστος τύπος βρέθηκε. . απαιτείται java.lang.Throwable "

Σημείωση:

Η λέξη-κλειδί ρίψεων χρησιμοποιείται σε C ++, JAVA, C #, για να εκχωρήσετε χειροκίνητα μια εξαίρεση.

Ορισμός των ρίψεων

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

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

Η γενική μορφή της λέξης-κλειδιού είναι:

 return_type όνομα_μέσου (λίστα παραμέτρων) throws exceptionClass_list {// body of method} 

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

Ας πάρουμε ένα παράδειγμα για να καταλάβουμε τη λέξη-κλειδί ρίχνει.

 Δοκιμή {δημόσιο static κενό κύρια (String [] args) ρίχνει InterruptedException {ύπνος νήμα (10000)? }} 

Στον παραπάνω κώδικα, το κύριο νήμα γίνεται για ύπνο για κάποιο χρονικό διάστημα χρησιμοποιώντας τη μέθοδο sleep (). Τώρα, όταν η κύρια μέθοδος είναι σε ύπνο, είναι πιθανό τα άλλα νήματα να διακόψουν το κύριο νήμα. Αλλά, η λέξη-κλειδί ρίχνει χρησιμοποιείται μετά την υπογραφή της κύριας () μεθόδου έτσι, το πρόγραμμα θα μεταγλωττιστεί εύκολα. Η λέξη-κλειδί throws δηλώνει την εξακριβωμένη κλάση εξαίρεσης InterruptedException. Τώρα, εάν οποιοδήποτε άλλο νήμα διακόπτει το κύριο νήμα κατά τη διάρκεια εκτέλεσης, η λέξη λέξεων throws θα μεταβιβάσει αυτήν την εξαίρεση στον καλούντα της κύριας () μεθόδου, η οποία είναι η JVM. Η JVM θα τερματίσει το πρόγραμμα κατά τρόπο μη κανονικό.

Τα σημεία που πρέπει να θυμάστε σχετικά με λέξεις-κλειδιά:

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

Σημείωση:

Η λέξη-κλειδί ρίχνει χρησιμοποιείται μόνο στη Java. C ++ και C # δεν χρησιμοποιούν τη λέξη-κλειδί ρίχνει.

Βασικές διαφορές μεταξύ ρίψεων και ρίψεων

  1. Η λέξη-κλειδί ρίχνει, μεταβιβάζει χειροκίνητα την ευθύνη του χειρισμού των εξαιρέσεων στη JVM, ενώ η λέξη-κλειδί ρίχνει, παραδίδει την ευθύνη της αντιμετώπισης των εξαιρέσεων στη μέθοδο του καλούντος του κώδικα όπου έγινε εξαίρεση.
  2. Η λέξη-κλειδί throw ακολουθείται από το αντικείμενο εξαίρεσης που παραδίδει στο JVM. Από την άλλη πλευρά, η λέξη-κλειδί ρίχνει ακολουθείται από τις κλάσεις εξαίρεσης που μπορεί να προκύψουν στη μέθοδο.
  3. Η λέξη-κλειδί ρίψεως μπορεί να ρίξει ένα μοναδικό αντικείμενο εξαίρεσης κάθε φορά, ενώ η λέξη-κλειδί ρίψεων μπορεί να δηλώσει πολλαπλές κλάσεις εξαίρεσης που χωρίζονται με κόμμα κάθε φορά.

Συμπέρασμα:

Η λέξη-κλειδί ρίψεων χρησιμοποιείται καλύτερα για την εξατομικευμένη εξαίρεση. Το μπλοκ try / catch είναι το καλύτερο για το χειρισμό των εξαιρέσεων σε σύγκριση με τις λέξεις-κλειδιά throws.

Top