[ Pobierz całość w formacie PDF ]

woÅ‚any skrypt z bÅ‚¹dem, wyÅ›wietlany jest komunikat o bÅ‚¹dzie. Do powszechnie spotyka-
nych przyczyn wyst¹powania bÅ‚¹dów czasu wykonania należą odwoÅ‚ania do niezdefinio-
wanych zmiennych, niewłaściwe zastosowanie obiektów, wstawianie niezgodnych typów
i tworzenie p¹tli nieskoÅ„czonych. Poniższy kod generuje typowy bÅ‚Ä…d czasu wykonania:

550 Część III Strategie programowania
Komunikaty o bÅ‚¹dach generowane przez IE 5 i Netscape 6 sÄ… nast¹pujÄ…ce:
Obie przeglądarki informują użytkownika, że zmienna nie jest zdefiniowana.
Ponieważ przeglądarka nie  wie , co ma wyświetlić w polu , zwracany jest błąd.
Oto bardziej złożony przykład kodu generującego błąd wykonania:
Ten skrypt generuje nast¹pujÄ…ce bÅ‚¹dy:

Rozdział 13. Obsługa błędów, uruchamianie, rozwiązywanie problemów 551
Powodem, dla którego skrypt generuje błąd, jest jego wykonanie zanim zostanie utworzone
pole tekstowe. Skrypt nie może przypisać wartości czemuś, co nie istnieje. Sam skrypt jest
caÅ‚kowicie poprawny i nie wygenerowaÅ‚by żadnych bÅ‚¹dów, gdyby byÅ‚ wykonany po utwo-
rzeniu pola tekstowego lub gdyby został umieszczony w funkcji wywołanej po załadowa-
niu tekstu HTML.
Błędy logiczne
BÅ‚Ä™dy logiczne sÄ… wolne od bÅ‚¹dów skÅ‚adni i czasu wykonania, lecz prowadzÄ… do niepopraw-
nych wyników. BÅ‚¹dy logiczne nie powodujÄ… zatrzymania wykonywania skryptu, chyba że
niezamierzone wyniki bÅ‚¹du logicznego w poÅ‚Ä…czeniu z innym poleceniem lub skryptem
powodujÄ… bÅ‚Ä…d czasu wykonania. Usuwanie bÅ‚¹dów logicznych jest cz¹sto najtrudniejsze
i może od programisty wymagać prześledzenia wartości wszystkich zmiennych w każdym
kroku skryptu. Do cz¹stych przyczyn bÅ‚¹dów logicznych należą: użycie zamiast i nie-
zgodne typy danych. Poniższy kod ilustruje, jak łatwo jest wygenerować błąd logiczny:
W powyższym przykÅ‚adzie wynik zawsze b¹dzie taki:

552 Część III Strategie programowania
Pierwsze wartościowanie zmiennej (instrukcja ) zawsze zwróci , ponieważ za każdym
razem ustawia wartość zmiennej równą za pomocą operatora zamiast użyć operatora po-
równania . Ponieważ instrukcja daje (gdyż mogłaby zwrócić tylko wtedy,
gdyby wartości nie można było z jakiegoś powodu zmienić), za każdym razem
otrzymamy alert jak na rysunku powyżej. Gdybyśmy zamienili na lub , wyniki byłyby
zgodne z oczekiwaniami, zaś wartość w oknie alert reprezentowałaby spodziewaną wartość
zmiennej, czyli zaczynaÅ‚a si¹ od wartoÅ›ci i zwi¹kszaÅ‚a za każdym klikni¹ciem OK o 1, aż do .
Najczęstsze błędy w JavaScripcie
Czytelnik, który sp¹dziÅ‚ jakiÅ› czas pracujÄ…c JavaScriptem zapewne napotkaÅ‚ wiele z poniż-
szych problemów. Zawsze jednak warto przyjrzeć si¹ im po raz drugi, aby pami¹tać o nich
podczas kodowania.
Niezdefiniowane zmienne, pisownia i kolejność skryptu
Zmienna w JavaScripcie może być zdefiniowana na dwa sposoby: niejawnie i jawnie. De-
finicja niejawna pozwala zdefiniować zmienną po prostu przez przypisanie wartości:
Definicja jawna wykorzystuje słowo kluczowe :
lub:
Wszystkie trzy metody dajÄ… taki sam efekt (z maÅ‚Ä… różnicÄ… dotyczÄ…cÄ… zasi¹gu zmiennej: zmien-
ne deklarowane niejawnie wewnÄ…trz funkcji stajÄ… si¹ zmiennymi globalnymi): zmienna o na-
zwie zostaje zdefiniowana i otrzymuje wartość .
Jak widzimy, zdefiniować zmienną jest łatwo  wystarczy przypisać do niej wartość. Błąd
otrzymamy tylko wtedy, gdy zmienna nie b¹dzie w ogóle zdefiniowana.
BÅ‚¹dy niezdefiniowanych zmiennych sÄ… cz¹sto powodowane przez literówki i bÅ‚¹dnie sto-
sowane duże litery w nazwach zmiennych.

Rozdział 13. Obsługa błędów, uruchamianie, rozwiązywanie problemów 553
W powyższym skrypcie sÄ… dwa poważne bÅ‚¹dy. Po pierwsze, zmienna zostaÅ‚a nie-
poprawnie zapisana od dużej litery  . Po drugie, zmienna zostaÅ‚a bÅ‚¹d-
nie zapisana jako . Obie pomyÅ‚ki powodujÄ… podobne bÅ‚¹dy czasu wykonania: bÅ‚Ä…d
braku definicji zmiennej.
Powyższe okno bÅ‚¹du jest wyÅ›wietlane, jeżeli Microsoft Script Debuger zostaÅ‚ zainstalowany
i wÅ‚Ä…czony. Wi¹cej informacji o tym programie przedstawimy w podrozdziale  Microsoft
Script Debuger pod koniec rozdziału.
Chociaż definiowanie zmiennych w JavaScripcie jest bardzo łatwe, niezdefiniowane zmienne [ Pobierz całość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • thierry.pev.pl
  •