Το αντικείμενο Error
Στη διάρκεια εκτέλεσης ενός προγράμματος υπάρχει περίπτωση να προκύψει λάθος ή από λάθος κώδικα (bug) ή από λάθος του συστήματος.
Στην περίπτωση αυτή η μηχανή της javascript πετάει (throws) ένα αντικείμενο Error
το οποίο περιέχει κάποιο μήνυμα σχετικά με το λάθος που προέκυψε.
Για να διαχειριστούμε σωστά τα λάθη χρησιμοποιούμε τα μπλοκ (block) try
, catch
και προαιρετικά το finally
με το τρόπο που θα δούμε πιο κάτω.
Το αντικείμενο Error
είναι ένα γενικού τύπου αντικείμενο για λάθη και χρησιμοποιείται περισσότερο για προσαρμοσμένα (custom ή user-defined) λάθη.
Η σύνταξή του είναι:
new Error([message]);
Για να δημιουργήσουμε ένα νέο αντικείμενο Error
χρησιμοποιούμε τη λέξη new
και για να "πετάξουμε" το αντικείμενο χρησιμοποιούμε τη λέξη throw
.
Παράδειγμα
<script> var username = ""; try { if(username === "") throw new Error('oops, username must not be empty'); } catch (e) { console.log(e.name + ': ' + e.message); } </script>
Error: oops, username must not be empty
Εκτός από το αντικείμενο Error
, η javascript παρέχει μια σειρά προκαθορισμένου τύπου λάθη (errors) τα οποία τα κάνει throw όταν το σχετικό λάθος προκύψει.
Τα προκαθορισμένου τύπου λάθη είναι:
Όνομα Error | Επεξήγηση |
---|---|
EvalError | Γίνεται throw όταν προκύψει κάποιο λάθος σχετικό με την εντολή eval() αλλά έχει αντικατασταθεί από το SyntaxError. |
AggregateError | Χρησιμοποιείται όταν πολλά errors χρειάζεται να συσσωρευτούν σε ένα και να αναφερθούν με μία εντολή. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/AggregateError |
RangeError | Γίνεται throw όταν δωθεί τιμή εκτός ορίων. |
ReferenceError | Γίνεται throw όταν γίνει αναφορά σε μη δηλωμένη μεταβλητή η συνάρτηση. |
SyntaxError | Γίνεται throw όταν προκύψει συντακτικό λάθος. |
TypeError | Γίνεται throw όταν προκύψει λάθος σχετικό με τον τύπο μεταβλητής. |
URIError | Γίνεται throw όταν προκύψει λάθος σχετικό με την εντολή encodeURI() . |
Παράδειγμα RangeError
<script> var num = 1; try { num.toPrecision(500); } catch(e) { console.log(e.name, e.message); } </script>
RangeError, precision 500 out of range
Παράδειγμα ReferenceError
<script> var x; try { x = y + 1; } catch(e) { console.log(e.name, e.message); } </script>
ReferenceError, y is not defined
Παράδειγμα SyntaxError
<script> try { eval('hello world'); } catch(e) { console.log(e.name, e.message); } </script>
SyntaxError, missing ; before statement
Παράδειγμα TypeError
<script> var num = 123; try { num.toUpperCase(); } catch(e) { console.log(e.name, e.message); } </script>
TypeError, num.toUpperCase is not a function
Παράδειγμα URIError
<script> try { decodeURI("%%%"); } catch(e) { console.log(e.name, e.message); } </script>
URIError, malformed URI sequence
Για περισσσότερες πληροφορίες σχετικά με το Error: Δείτε: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error