jesteś tutaj
649
Pozostałości
5. Obsługa wyjątków
JavaScript jest językiem, który dużo wybacza, jednak od czasu do czasu zawsze coś może
pójść nie tak jak trzeba — na tyle źle, by przeglądarka nie była w stanie dalej wykonywać
kodu. Kiedy coś takiego się wydarzy, nasze strony przestają działać, a jeśli zajrzymy do okna
konsoli, najprawdopodobniej zobaczymy w nim jakiś komunikat o błędzie. Przeanalizujemy
teraz jakiś przykład kodu, który powoduje wystąpienie błędu. Zacznij od utworzenia prostej
strony HTML, której treść będzie się składać z jednego elementu.
window.onload = function() {
try {
var message = document.getElementById(”messge”);
message.innerHTML = ”To jest komunikat!”;
} catch (error) {
console.log(”WyjÈtek! ” + error.message);
}
};
window.onload = function() {
var message = document.getElementById(”messge”);
message.innerHTML = ”To jest komunikat!”;
};
Konsola JavaScript
Uncaught TypeError: Cannot set property
IJinnerHTML’ of null
A teraz dodaj do niej następujący kod JavaScript.
<div id=”message”></div>
Wyświetl stronę w przeglądarce, a następnie wyświetl okno konsoli, a zobaczysz
komunikat o błędzie. Czy już wiesz, co poszło nie tak? Nieprawidłowo zapisaliśmy
identyfikator elementu
<div>
, a zatem, kiedy kod spróbuje go pobrać, próba ta się nie
powiedzie i w zmiennej
message
zostanie zapisana wartość
null
. A przecież nie można
uzyskać dostępu do właściwości
innerHTML
o wartości
null
.
Kiedy pojawi się błąd, który powoduje zatrzymanie realizacji kodu, jak w powyższym przypadku, nazywamy go
wyjątkiem. Język JavaScript udostępnia mechanizm, którego można użyć do oczekiwania na ewentualnie wyjątki
i przechwytywania ich, kiedy wystąpią. Mechanizmem tym jest instrukcja
try/catch
. Idea ich działania polega na
tym, że jeśli będziemy w stanie przechwycić jeden z takich wyjątków, to zamiast przerywania działania kodu możemy
wykonać jakąś alternatywną czynność (spróbować innego rozwiązania, zapewnić użytkownikowi inne wrażenia itd.).
Try/catch
Instrukcja
try/catch
jest używana w następujący sposób: obserwowany kod, w którym mogą wystąpić wyjątki,
zapisujemy w bloku
try
, a za nim umieszczamy blok
catch
zawierający kod, który zostanie wykonany w przypadku,
kiedy podczas realizacji kodu w bloku
try
wystąpią jakieś problemy. Za słowem kluczowym
catch
umieszczana
jest para nawiasów zawierająca nazwę zmiennej (działa ona podobnie do parametru funkcji). Jeśli coś pójdzie nie
tak i zostanie zgłoszony wyjątek, w tej zmiennej zostanie zapisana wartość związana z tym wyjątkiem, przy czym
zazwyczaj jest to obiekt
Error
. Poniżej pokazaliśmy, jak można używać instrukcji
try/catch
.
Nasz kod przenieśliśmy do bloku try.
Tutaj próbujemy określić wartość właściwości
innerHTML zmiennej message (która ma
wartość null) i zapisać w niej łańcuch znaków.
Jeśli podczas wykonywania kodu umieszczonego
w bloku try zostanie zgłoszony wyjątek, będzie
wykonana ta instrukcja. W tym przypadku jedyną
rzeczą, którą robimy, jest wyświetlenie komunikatu
w oknie konsoli. Następnie kod jest wykonywany,
począwszy od wiersza umieszczonego bezpośrednio
za instrukcją try/catch.
W zależności od przechwyconego wyjątku,
w tym miejscu można by wykonać jakieś
inne, znacznie bardziej inteligentne operacje.
Do tego kodu wkradł się jeden
błąd. Czy potrafisz zauważyć,
co zrobiliśmy źle?
Get Programowanie w JavaScript Rusz głową! now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.