Εκτόξευση Εξαιρέσεων στο JavaScript
Σε προηγούμενα μαθήματα μελετήσαμε δύο θέσεις όπου το JavaScript εκτοξεύει εξαίρεση σε περίπτωση κάποιων προβλημάτων.
Στο project σας, ωστόσο, μπορεί να υπάρχουν και άλλες καταστάσεις που για εσάς είναι εξαιρετικές, αλλά για το JavaScript - όχι. Σε αυτήν την περίπτωση μπορείτε να δημιουργήσετε και να εκτοξεύσετε τις δικές σας, προσαρμοσμένες εξαιρέσεις.
Ας δούμε τη σύνταξη που απαιτείται για
αυτό. Αρχικά, η εξαίρεση πρέπει να δημιουργηθεί
χρησιμοποιώντας την εντολή new Error, περνώντας ως παράμετρο
το κείμενο της εξαίρεσης:
new Error('κείμενο εξαίρεσης');
Στη συνέχεια, αυτή η εξαίρεση πρέπει να εκτοξευθεί με την
εντολή throw:
throw new Error('κείμενο εξαίρεσης');
Η εκτόξευση μιας εξαίρεσης αναγκάζει το JavaScript
να θεωρήσει ότι συνέβη μια εξαιρετική κατάσταση.
Αυτό σημαίνει ότι μια τέτοια εξαίρεση μπορεί να πιαστεί
χρησιμοποιώντας την κατασκευή try-catch και
να επεξεργαστεί με τον κατάλληλο τρόπο.
Ας δούμε με ένα παράδειγμα πώς να τη χρησιμοποιούμε. Ας υποθέσουμε ότι έχουμε μια συνάρτηση που διαιρεί έναν αριθμό με έναν άλλο:
function div(a, b) {
return a / b;
}
Ας θεωρήσουμε ότι η διαίρεση με το μηδέν
απαγορεύεται και ότι κάθε προσπάθεια να γίνει αυτό πρέπει
να προκαλεί μια εξαιρετική κατάσταση. Για αυτό
θα ελέγχουμε στη συνάρτηση, εάν υπάρχει προσπάθεια
διαίρεσης με 0. Εάν όχι - θα διαιρούμε,
αλλά εάν ναι - θα εκτοξεύουμε εξαίρεση:
function div(a, b) {
if (b !== 0) {
return a / b;
} else {
throw new Error('σφάλμα διαίρεσης με το μηδέν');
}
}
Αρχικά, ας προσπαθήσουμε απλά να διαιρέσουμε
με 0, χωρίς να πιάσουμε την εξαίρεση:
alert( div(3, 0) );
Σε αυτήν την περίπτωση, η εκτέλεση του script θα διακοπεί
και στην κονσόλα θα εμφανιστεί ένα σφάλμα με το κείμενο 'σφάλμα
διαίρεσης με το μηδέν' (ελέγξτε). Ας
πιάσουμε τώρα το σφάλμα μας και
να το επεξεργαστούμε με κάποιο τρόπο:
try {
alert( div(3, 0) );
} catch (error) {
alert('προσπαθείτε να διαιρέσετε με το 0, κάτι που απαγορεύεται');
}
Στο JavaScript, η προσπάθεια εξαγωγής τετραγωνικής ρίζας από αρνητικό αριθμό δεν οδηγεί σε εκτόξευση εξαίρεσης:
let result = Math.sqrt(-1);
console.log(result); // θα εμφανίσει NaN
Γράψτε τη δική σας συνάρτηση, που θα εξάγει τετραγωνική ρίζα από έναν αριθμό και ταυτόχρονα θα εκτοξεύει εξαίρεση, εάν η ρίζα εξάγεται από αρνητικό αριθμό.