Εφαρμογή τύπων εξαιρέσεων στο JavaScript
Ας υποθέσουμε ότι έχουμε μια συνάρτηση που δέχεται ως παράμετρο JSON με έναν πίνακα δεδομένων και γράφει κάθε στοιχείο αυτού του πίνακα στην τοπική αποθήκευση:
function saveData(json) {
let arr = JSON.parse(json);
for (let i = 0; i < arr.length; i++) {
localStorage.setItem(i, arr[i]);
}
}
Σε αυτή τη συνάρτηση, μια εξαιρετική κατάσταση μπορεί να προκύψει σε δύο σημεία: κατά την ανάλυση του JSON και κατά την προσπάθεια αποθήκευσης δεδομένων στην τοπική αποθήκευση.
Ας υποθέσουμε, για παράδειγμα, ότι για την επεξεργασία σφαλμάτων αποφασίσαμε να εμφανίσουμε κάποιο μήνυμα σχετικά με τα προβλήματα:
try {
saveData('{1,2,3,4,5}');
} catch (error) {
alert('κάποια προβλήματα');
}
Το μήνυμά μας είναι, βέβαια, καλό, αλλά δεν διαφοροποιεί καθόλου τα προβλήματα που προέκυψαν. Θα ήταν πιο λογικό να εμφανιστεί ένα μήνυμα σχετικά με το ποιο ακριβώς πρόβλημα προέκυψε.
Για να γίνει αυτό, θα διακρίνουμε τα σφάλματα που προέκυψαν βάσει του ονόματος:
try {
saveData('{1,2,3,4,5}');
} catch (error) {
if (error.name == 'QuotaExceededError') {
alert('τελείωσε ο χώρος στην αποθήκευση');
}
if (error.name == 'SyntaxError') {
alert('λανθασμένο JSON');
}
}
Αντιγράψτε τον κώδικα της συνάρτησής μου saveData,
και στη συνέχεια, χωρίς να κοιτάτε τον δικό μου κώδικα, υλοποιήστε
την επεξεργασία σφαλμάτων που περιέγραψα.
Δημιουργήστε σκόπιμα, με τη σειρά, εξαιρετικές
καταστάσεις που μπορεί να προκύψουν στη συνάρτηση
saveData.