Σφάλματα JavaScript - Θrown και Try to Catch
- Προηγούμενη σελίδα Προτεραιότητα των operator JS
- Επόμενη σελίδα JS περιοχή
try
Η πρόταση επιτρέπει τον έλεγχο σφαλμάτων στον κώδικα.
catch
Η πρόταση επιτρέπει την επεξεργασία σφαλμάτων.
throw
Η πρόταση επιτρέπει τη δημιουργία προσαρμοσμένων σφαλμάτων.
finally
Επιτρέπει την εκτέλεση κώδικα, μετά το try και το catch, ανεξάρτητα από το αποτέλεσμα.
Τα σφάλματα θα συμβούν πάντα!
Όταν εκτελείτε κώδικα JavaScript, μπορεί να συμβούν διάφορα σφάλματα.
Τα σφάλματα μπορεί να προέλθουν από σφάλματα κώδικα του προγραμματιστή, σφάλματα από λάθος εισαγωγής ή από άλλες απρόβλεπτες προβλήματα.
παράδειγμα
Σε αυτό το παράδειγμα, χρησιμοποιούμε adddlert
Γράψτε κώδικα προειδοποίησης για να δημιουργήσετε σκόπιμα ένα σφάλμα:
<p id="demo"></p> <script> try { adddlert("Καλώς ήρθατε να επισκεφτείτε!"); } catch(err) { document.getElementById("demo").innerHTML = err.message; } </script>
Το JavaScript θα καταγράψει το adddlert ως σφάλμα και θα εκτελέσει κώδικα για την επεξεργασία του σφάλματος.
Το JavaScript try και catch
try
Η πρόταση επιτρέπει τη διάκριση ενός κώδικα για την αναγνώριση σφαλμάτων κατά την εκτέλεση.
catch
Η πρόταση επιτρέπει τη διάκριση ενός κώδικα που θα εκτελεστεί, αν συμβεί σφάλμα στον κώδικα try.
Συνταγές JavaScript try
και catch
Παράλληλα:
try { Κώδικας για δοκιμή } catch(err) { Κώδικας για την επεξεργασία σφαλμάτων }
Το JavaScript προκαλεί σφάλματα
Όταν συμβεί σφάλμα, το JavaScript συνήθως σταματά και δημιουργεί μήνυμα σφάλματος.
Η τεχνική ορολογία περιγράφεται ως:Το JavaScript θα προκαλέσει εξαίρεση (προκαλέσει σφάλμα).
Το JavaScript δημιουργεί μια εξαίρεση με δύο ιδιότητες: Αντικείμενο Error:name
και message
.
πρόταση throw
throw
Η πρόταση επιτρέπει τη δημιουργία προσαρμοσμένων σφαλμάτων.
Τεχνολογικά μπορείτε ναΕξάγει εξαίρεση (προκαλεί σφάλμα).
Η εξαίρεση μπορεί να είναι αλφαριθμητική, αριθμητική, βολική ή αντικειμενοποίηση του JavaScript:
throw "Too big"; // Εξάγει κείμενο throw 500; // Εξάγει αριθμό
αν throw
με try
και catch
Παραλληλώς, μπορείτε να ελέγξετε τον ροή του προγράμματος και να δημιουργήσετε προσαρμοσμένα μηνύματα σφαλμάτων.
Παράδειγμα επαλήθευσης εισαγωγής
Αυτό το παράδειγμα θα ελέγξει την εισαγωγή. Αν η τιμή είναι λάθος, θα προκαλέσει εξαίρεση (err).
Η εξαίρεση (err) απορροφάται από την πρόταση catch και εμφανίζει ένα προσαρμοσμένο μήνυμα σφάλματος:
<!DOCTYPE html> <html> <body> <p>Παρακαλώ εισάγετε αριθμό μεταξύ 5 και 10:</p> <input id="demo" type="text"> <button type="button" onclick="myFunction()">Δοκιμή Εισαγωγής</button> <p id="message"></p> <script> function myFunction() { var message, x; message = document.getElementById("message"); message.innerHTML = ""; x = document.getElementById("demo").value; try { if(x == "") throw "Κενό"; if(isNaN(x)) throw "Δεν είναι αριθμός"; x = Number(x); if(x < 5) throw "Πολύ μικρό"; if(x > 10) throw "Πολύ μεγάλο"; } catch(err) { message.innerHTML = "Εισαγωγή είναι " + err; } } </script> </body> </html>
Επαλήθευση HTML
Ο παραπάνω κώδικας είναι απλώς ένα παράδειγμα.
Οι σύγχρονες περιηγητές συνήθως συνδυάζουν το JavaScript με ενσωματωμένη επαλήθευση HTML, χρησιμοποιώντας προκαθορισμένα σενάρια επαλήθευσης που ορίζονται στις ιδιότητες HTML:
<input id="demo" type="number" min="5" max="10" step="1">
Θα μάθετε περισσότερα για την επαλήθευση φόρμας σε μεταγενέστερη ενότητα αυτού του οδηγού.
finally πρόταση
finally
Η πρόταση επιτρέπει την εκτέλεση κώδικα μετά από try και catch, ανεξάρτητα από το αποτέλεσμα:
try { // Κώδικας για δοκιμές; } catch(err) { // Κώδικας για την αντιμετώπιση σφαλμάτων; } finally { // Ο κώδικας που εκτελείται ανεξάρτητα από το αποτέλεσμα; }
παράδειγμα
function myFunction() { var message, x; message = document.getElementById("message"); message.innerHTML = ""; x = document.getElementById("demo").value; try { if(x == "") throw "Είναι κενό"; if(isNaN(x)) throw "Δεν είναι αριθμός"; x = Number(x); if(x > 10) throw "Πολύ μεγάλο"; if(x < 5) throw "Πολύ μικρό"; } catch(err) { message.innerHTML = "Σφάλμα: " + err + "."; } finally { document.getElementById("demo").value = ""; } }
Αντικείμενο Error
Το JavaScript έχει ενσωματωμένο αντικείμενο error που παρέχει πληροφορίες σφάλματος όταν συμβαίνει σφάλμα.
το αντικείμενο error παρέχει δύο χρήσιμες ιδιότητες:name
και message
.
Ιδιότητες του αντικειμένου Error
Ιδιότητα | Περιγραφή |
---|---|
name | Ρύθμιση ή επιστροφή του ονόματος σφάλματος |
message | Ρύθμιση ή επιστροφή του μηνύματος σφάλματος (μια αλφαριθμητική ακολουθία) |
Τιμές Ονόματος Σφάλματος
Η ιδιότητα name του error μπορεί να επιστρέψει έξι διαφορετικές τιμές:
Όνομα σφάλματος | Περιγραφή |
---|---|
EvalError | Σφάλμα που έχει συμβεί στην εντολή eval() |
RangeError | Σφάλμα που έχει συμβεί με αριθμό εκτός φάσματος |
ReferenceError | Σφάλμα παράβασης αναφοράς που έχει συμβεί |
SyntaxError | Σφάλμα γραμματικής που έχει συμβεί |
TypeError | Σφάλμα τύπου που έχει συμβεί |
URIError | Σφάλμα που έχει συμβεί στο encodeURI() |
Περιγράψτε τις έξι διαφορετικές τιμές αυτές.
Σφάλμα Eval
EvalError
σήμα σφάλματος στην εντολή eval()
Η νέα έκδοση του JavaScript δεν θα προκαλέσει κανένα EvalError
Παρακαλώ χρησιμοποιήστε SyntaxError
αντικαταστήστε με
σφάλμα περιοχής
RangeError
θα προκαλέσει σφάλμα όταν χρησιμοποιήσετε αριθμούς εκτός του νόμιμου ορίου τιμών.
π.χ. δεν μπορείτε να ορίσετε το αριθμητικό αποτέλεσμα σε 500 σημαντικές θέσεις.
παράδειγμα
var num = 1; try { num.toPrecision(500); // Ο αριθμός δεν μπορεί να έχει 500 σημαντικές αριθμητικές μονάδες } catch(err) { document.getElementById("demo").innerHTML = err.name; }
σφάλμα αναφοράς
Εάν χρησιμοποιήσετε (αναφέρετε) μεταβλητή που δεν έχει δηλωθεί, τότε ReferenceError
θα προκαλέσει:
παράδειγμα
var x; try { x = y + 1; // Η y δεν μπορεί να αναφερθεί (χρησιμοποιηθεί) } catch(err) { document.getElementById("demo").innerHTML = err.name; }
σφάλμα γραμματικής
Εάν υπολογίσετε κώδικα με σφάλματα γραμματικής, θα SyntaxError
αποτύχει:
παράδειγμα
try { eval("alert('Hello')"); // Η έλλειψη ' θα προκαλέσει σφάλμα } catch(err) { document.getElementById("demo").innerHTML = err.name; }
σφάλμα τύπου
Εάν η τιμή που χρησιμοποιείτε δεν βρίσκεται εντός του αναμενόμενου ορίου τιμών, τότε TypeError
αποτύχει:
παράδειγμα
var num = 1; try { num.toUpperCase(); // Δεν μπορείτε να μετατρέψετε τον αριθμό σε κεφαλαία } catch(err) { document.getElementById("demo").innerHTML = err.name; }
URI σφάλμα
Αν χρησιμοποιήσετε μη νόμιμα χαρακτήρες στις λειτουργίες URI, τότε URIError
αποτύχει:
παράδειγμα
try { decodeURI("%%%"); // Δεν μπορείτε να κωδικοποιήσετε αυτές τις τοποθεσίες URI } catch(err) { document.getElementById("demo").innerHTML = err.name; }
Μη standardιζόμενες ιδιότητες του error αντικειμένου
Το Mozilla και το Microsoft ορίζουν μη стандартизованные προσαρμοσμένες ιδιότητες του error αντικειμένου:
- fileName (Mozilla)
- lineNumber (Mozilla)
- columnNumber (Mozilla)
- stack (Mozilla)
- description (Microsoft)
- number (Microsoft)
Μη χρησιμοποιήστε αυτές τις ιδιότητες σε δημόσιους ιστότοπους. Δεν λειτουργούν σε όλους τους περιηγητές.
- Προηγούμενη σελίδα Προτεραιότητα των operator JS
- Επόμενη σελίδα JS περιοχή