OBSŁUGA BŁĘDÓW W JS
Kod defensywny - taki, który zakłada, że jeśli coś może pójść źle to tak się stanie ("expect the unexpected"). Do tego może posłużyć konstrukcja "Try... catch", która pozwala obsłużyć błędy bez "psucia" i zatrzymania programu.
Konstrukcja TRY... CATCH najpierw sprawdza czy kod da się wykonać. Jeśli się nie da wykonać to powstaje obiekt (error). Ale sam program się nie zatrzyma, tylko będzie działał dalej. W konsoli w odpowiednim miejscu pojawi się odpowiedni komunikat błędu.
try {
const obiekt = null;
console.log(obiekt.właściwość); //to wywoła TypeError
} catch (error) {
console.error("Wystąpił błąd: ", error.message);
}
console.log("Program kontyuuje działanie po obsłudze błędu. ");
W JAVASCRIPT DZIELENIE PRZEZ ZERO NIE WYWOŁA BŁĘDU TYLKO NaN!!!
Druga konstrukcja do obsługi błędów to:
TRY... CATCH... FINALLY
Finally to dodatkowy blok, który się wykona ZAWSZE!

try {
console.log("Otwieranie zasobu...");
zasob = true;
//symulacja operacji, która może się nie udać:
if (Math.random() , 0.5) {
throw new Error("Operacja nie powiodła się");
}
console.log("Operacja zakończona sukcesem");
} catch (error) {
console.log("Błąd: " + error.message);
} finally {
// ten blok ZAWSZE się wykona!
if (zasob) {
console.log("Zamykanie zasobu...");
zasob = false;
}
console.log("Finally: Sprzątanie zakończone");
}
Pamiętaj, że nie należy całego kodu opakowywać w jeden Try. To nie pomoże w zidentyfikowaniu faktycznego miejsca wystąpienia błędu.
Gdzie warto używać try...catch? W miejscach kodu gdzie:
- dochodzi do interakcji z użytkownikiem (użytkownik ma wpisać jakiś input)
- załączane są pliki
- dochodzi do operacji zależnych od jakichś zewnętrznych źródeł
TYPY BŁĘDÓW:
W języku JavaScript istnieje kilka podstawowych typów błędów, w tym syntax error (błąd składni), reference error (błąd odniesienia) i type error (błąd typu). Błędy są klasyfikowane na różne typy, a najczęściej występują: błędy składni, odniesienia, typu, oceny, zakresu, URI i błędy wewnętrzne, a także błędy zdefiniowane przez użytkownika za pomocą throw. Podstawowe typy błędów
- Syntax Error: Występuje, gdy kod narusza gramatykę/składnię języka.
- Reference Error: Występuje, gdy próbuje się odwołać do niezadeklarowanej zmiennej lub innej niezdefiniowanej funkcji.
- Type Error: Występuje, gdy operacja jest wykonywana na wartości niewłaściwego typu (np. próba wywołania ciągu znaków jako funkcji).
- Eval Error: Występuje w przypadku błędu podczas wykonywania funkcji
eval(). - Range Error: Występuje, gdy liczba lub wartość przekracza dopuszczalny zakres.
- URI Error: Występuje podczas używania funkcji do kodowania lub dekodowania URI (Uniform Resource Identifier).
Inne rodzaje błędów
- Błędy zdefiniowane przez użytkownika: Programista może ręcznie zgłosić własny błąd za pomocą instrukcji
throwi własnego obiektu błędu. - Błędy wewnętrzne: Występują, gdy silnik JavaScript napotyka na nieoczekiwany błąd podczas wykonywania kodu