Błędy programistyczne są nieuniknione. Prędzej czy później aplikacja będzie działać w nieoczekiwany sposób. Jak każdy inny język programowania, JavaScript zgłasza błędy, gdy coś pójdzie nie tak w twoim kodzie.

Błędy zakłócają normalny przepływ aplikacji. Ale pomagają również chronić Twoją aplikację przed nieprzewidywalnym zachowaniem. Wiedza o tym, jak prawidłowo radzić sobie z błędami, jest kluczowa.

Dlaczego obsługa błędów jest ważna?

Obsługa błędów przyczynia się do poprawy komfortu użytkownika. Możesz zamienić domyślne, a czasem szczegółowe błędy JavaScriptu, na własne komunikaty o błędach bardziej czytelne dla człowieka. Możesz z wdziękiem poradzić sobie z przyczynami niektórych błędów i utrzymać działanie programu, zamiast go zamykać.

Obsługa błędów jest również pomocna podczas programowania. Możesz złapać błąd wykonania i zrobić z nim coś pożytecznego, na przykład logowanie go do konsoli przeglądarki. Jest to bardziej wdzięku niż błąd powodujący awarię i brak wiedzy, gdzie i dlaczego wystąpił błąd.

instagram viewer

Struktura wbudowanych błędów JavaScript

Błędy JavaScript to obiekty o trzech właściwościach:

  • Nazwa: To jest nazwa błędu. Na przykład brakująca nazwa zmiennej spowoduje wyświetlenie błędu o nazwie SyntaxError.
  • wiadomość: To jest treść wiadomości i tekstowo wyjaśnia błąd.
  • przyczyna: Możesz użyć tej właściwości z błędami niestandardowymi, aby śledzić stos wywołań.

Typowe typy błędów w JavaScript

Oto kilka typowych błędów występujących w JavaScript.

Błąd składni

Błędy składni mogą wystąpić, gdy JavaScript próbuje zinterpretować Twój kod. Zgłosi błąd, jeśli twój kod nie jest zgodny z poprawną składnią. Niektóre typowe błędy, które mogą powodować błędy składni, to:

  • Brak nazw zmiennych.
  • Brak „}” po funkcji.
  • Brak „)” po warunku.

Błąd odniesienia

Błędy odniesienia występują, gdy program próbuje: odwoływać się do zmiennej która jest niedostępna lub poza zakresem.

Wpisz błąd

JavaScript może zgłosić błąd typu, gdy nie może wykonać operacji, ponieważ oczekiwany typ różni się od tego, który otrzymuje.

Błąd URI

Ten błąd występuje, jeśli niepoprawnie używasz globalnej funkcji obsługi identyfikatora URI, takiej jak decodeURIComponent(). W rezultacie kodowanie lub dekodowanie kończy się niepowodzeniem.

Błąd zbiorczy

Ten błąd służy do reprezentowania wielu błędów zawartych w jednym. Użyj go, gdy chcesz wyrzucić wiele błędów na raz. Na przykład Promise.any() może rzucić AggregateError(), gdy wszystkie przekazane do niej obietnice zostaną odrzucone.

Błąd wewnętrzny

InternalError jest generowany, gdy wystąpi błąd w silniku JavaScript.

Błąd zakresu

Niektóre funkcje dyktują zakres wartości, które możesz przekazać jako argumenty. Ten błąd występuje, gdy próbujesz przekazać wartość, która nie znajduje się w tym zakresie.

Obsługa błędów w Try... Złap blok

JavaScript zapewnia wbudowaną funkcjonalność obsługi wyjątków z spróbuj…złap…wreszcie blok. Pozwala również na zgłaszanie własnych błędów za pomocą rzucić operator.

Możesz użyć bloku try…catch do obsługi błędów, które pojawiają się w czasie wykonywania. W bloku try piszesz prawidłowy kod, który ma zostać wykonany poprawnie. W bloku catch możesz napisać kod obsługi błędów.

próbować {
// Poprawny kod JavaScript
} złapać (błąd) {
// Obsługa błędu
} wreszcie {
// Wykonywane nawet w przypadku wystąpienia błędu
}

Blok catch jest ignorowany, jeśli kod w bloku try nie zgłasza żadnych błędów. Jeśli zgłosi błąd, wykonanie przeskakuje do bloku catch. Kod w bloku Last jest uruchamiany bez względu na to, czy wystąpi błąd, czy nie. Ten blok nie jest obowiązkowy, więc pomiń go, jeśli go nie potrzebujesz.

Kod zawarty w bloku try musi być prawidłowy. Jeśli tak nie jest, JavaScript zgłosi błąd parsowania.

Spójrzmy na praktyczny przykład:

próbować {
konsola.log (tekst)
} złapać (błąd) {
konsola.dziennik(błąd.wiadomość)
} wreszcie {
konsola.log("Zostanie wykonany niezależnie")
}

Ten program próbuje rejestrować wartość zmiennej tekstowej. Ponieważ ta zmienna nie jest zdefiniowana, program zgłosi błąd. Ten błąd jest drukowany na konsoli w bloku catch. Następnie blok końcowy uruchamia się i drukuje własny komunikat.

Błąd odniesienia: tekst nie jest zdefiniowany
Zostanie wykonany niezależnie

W sytuacjach, w których musisz zgłosić swój własny błąd, użyj rzucić operator.

Rozważmy ten przykład, który zgłasza błąd, jeśli dane są fałszywe:

stały dane = pobierzDane()

próbować {
jeśli (!dane) {
rzucić "Brak danych"
}

konsola.log (dane)
// kontynuować
} złapać(błąd) {
konsola.log (błąd) // "Brak danych"
}

W tym przykładzie program wywołuje funkcję getData() i przypisuje jej wynik do zmiennej data. W bloku try blok zgłasza błąd niestandardowy, jeśli dane są puste. Blok catch przechwytuje ten błąd i rejestruje go w konsoli.

Zgłaszanie błędów jest bardzo korzystne podczas programowania. Możesz użyć niestandardowego komunikatu o błędzie, aby zrozumieć, dlaczego aplikacja nie działa zgodnie z oczekiwaniami.

Jak pokazuje ten przykład, możesz użyć ciągu jako obiektu błędu. W rzeczywistości możesz zgłosić dowolne wyrażenie JavaScript jako błąd. Jednak w celu zachowania spójności z wbudowanymi błędami użyj obiektu JavaScript zawierającego nazwę i komunikat.

rzucić {
Nazwa: "Nazwa błędu",
wiadomość: "Komunikat o błędzie"
}

Możesz także użyć wbudowanych konstruktorów JavaScript podczas zgłaszania błędów. Te konstruktory obejmują między innymi Error, SyntaxError i ReferenceError.

Aby zgłosić błąd za pomocą konstruktora Error, użyj tego kodu:

rzucićNowyBłąd("Brak danych")

Możesz teraz odwołać się do nazwy i wiadomości.

konsola.log (nazwa.błędu) // Błąd
konsola.log (komunikat.o błędzie) // Brak danych

Rozszerzanie obiektu błędu JavaScript

Niestandardowa klasa błędu przydaje się podczas obsługi błędów, które nie odpowiadają obiektom już dostarczonym przez JavaScript. Na przykład możesz chcieć wyizolować błąd sprawdzania poprawności danych jako określony typ o nazwie ValidationError.

Możesz użyć Klasa JavaScript ES2015 aby utworzyć niestandardową klasę błędów.

klasaBłąd walidacjirozciąga sięBłąd{
konstruktor(wiadomość) {
super(wiadomość);
this.name = "Błąd walidacji";
}
}

Zgłoś błąd za pomocą klasy ValidationError w następujący sposób:

rzucićNowy ValidationError("Twój komunikat o błędzie")

Zgłoszonym błędem będzie obiekt o nazwie i wartościach komunikatu.

{
Nazwa: "Błąd walidacji",
wiadomość: "Twój komunikat o błędzie"
}

Błędy są po to, aby pomóc

Obsługa błędów to podstawowa część programowania, niezależnie od używanego języka. JavaScript ma świetne wsparcie dla zgłaszania i łapania błędów w stylu wyjątków. Ma również kilka wbudowanych typów błędów, które można obsługiwać i używać we własnych przypadkach.

Niektóre błędy, takie jak błędy składni, mogą pozostać niewykryte podczas pisania JavaScript w „trybie niechlujstwa”. Korzystanie z trybu ścisłego pozwala JavaScriptowi wyłapać błędy, które w przeciwnym razie zostałyby zignorowane.