Podstawy obsługi błędów

Flash Player 9 i nowsze wersje, Adobe AIR 1.0 i nowsze wersje

Błąd w czasie wykonywania występuje, gdy problem w kodzie ActionScript uniemożliwia wykonywanie treści w zamierzony sposób. Aby zapewnić użytkownikom płynne wykonywanie kodu ActionScript, należy napisać w aplikacji kod, który obsłuży błąd — naprawi go, utworzy rozwiązanie tymczasowe lub przynajmniej powiadomi użytkownika o jego wystąpieniu. Proces ten nazywany jest obsługą błędów .

Obsługa błędów jest szerokim pojęciem, które łączy w sobie reagowanie na wiele rodzajów błędów wygenerowanych podczas kompilacji lub w czasie wykonywania. Błędy powstałe w czasie kompilacji są często łatwe do zidentyfikowania — należy je naprawić w celu zakończenia procesu tworzenia pliku SWF.

Błędy czasu wykonania mogą być trudniejsze do wykrycia, ponieważ ich pojawienie się wymaga wykonania w danym momencie błędnego kodu. Jeśli fragment programu użytkownika zawiera kilka rozgałęzień kodu, np. instrukcję if..then..else , wówczas każdy możliwy warunek należy przetestować z wszystkimi możliwymi wartościami wejściowymi, których może użyć rzeczywisty użytkownik, aby potwierdzić, że kod jest wolny od błędów.

Błędy czasu wykonania można podzielić na dwie kategorie: błędy programu to błędy w kodzie ActionScript, np. określenie nieprawidłowego typu danych dla parametru metody; błędy logiczne to błędy w logice (sprawdzanie danych i manipulacja wartością) programu, np. użycie nieprawidłowej formuły do obliczania stóp procentowych w aplikacji bankowej. Ponownie — oba typy błędów można często wykryć i poprawić przed czasem, dokładnie testując aplikację.

W sytuacji idealnej przed wydaniem aplikacji do użytkowników końcowych użytkownik zidentyfikuje i usunie z niej wszystkie błędy. Jednak nie wszystkie błędy można przewidzieć lub im zapobiec. Na przykład: aplikacja ActionScript ładuje z danej strony internetowej informacje, które pozostają poza kontrolą użytkownika. Jeśli z jakiś przyczyn strona internetowa nie będzie dostępna, część aplikacji, która zależy od tych zewnętrznych danych, nie zadziała poprawnie. Najważniejszym aspektem obsługi błędów jest przygotowanie aplikacji na poprawne obsłużenie nieznanych błędów i przypadków. W razie błędu użytkownicy powinni mieć możliwość dalszego korzystania z aplikacji lub przynajmniej powinien pojawić się komunikat o błędzie wyjaśniający, dlaczego aplikacja nie działa.

Błędy czasu wykonania reprezentowane są w języku ActionScript na dwa sposoby:

  • Klasy błędu: wiele błędów ma skojarzoną z nimi klasę błędu. W przypadku pojawienia się błędu w środowisku wykonawczym Flash tworzona jest instancja konkretnej klasy błędu powiązana z tym błędem. Aby właściwie zareagować na błąd, w kodzie użytkownika można użyć informacji zawartej w tym obiekcie błędu.

  • Zdarzenia błędów: niekiedy błąd występuje w sytuacji, w której środowisko Flash w normalnych warunkach wywołałoby zdarzenie. W takich sytuacjach zamiast oczekiwanego zdarzenia wywoływane jest zdarzenie błędu. Z każdym zdarzeniem błędu jest skojarzona klasa, a instancja tej klasy przekazywana jest w środowisku wykonawczym Flash do metod, które przypisane są do zdarzenia błędu.

Aby dowiedzieć się, czy dana metoda może wywoływać błąd, czy zdarzenie błędu, należy zapoznać się z opisem tej metody w dokumentacji Skorowidz języka ActionScript 3.0 dla platformy Adobe Flash .

Ważne pojęcia i terminy

Poniższa lista zawiera istotne terminy dotyczące procedur obsługi błędów:

Asynchroniczne
Polecenie programu, np. wywołanie metody, które nie zapewnia natychmiastowego wyniku; zamiast tego zwraca wynik (lub błąd) w postaci zdarzenia.

Przechwycić
W momencie pojawienia się wyjątku (błąd czasu wykonania) informacja o nim dociera do kodu, w którym wyjątek należy przechwycić . Środowisko wykonawcze Flash nie powiadamia pozostałych składników kodu o przechwyceniu wyjątku.

Wersja z debugerem
Specjalna wersja środowiska wykonawczego Flash, taka jak odtwarzacz Flash Player z debugerem lub program AIR Debug Launcher (ADL), która zawiera kod powiadamiający użytkownika o błędach występujących w czasie wykonywania. W standardowej wersji programu Flash Player lub środowiska Adobe AIR (wersji posiadanej przez większość użytkowników) błędy, które nie zostaną obsłużone w kodzie ActionScript użytkownika, zostaną ignorowane. W wersjach z debugerem (zawartych w aplikacji Adobe Flash CS4 Professional oraz w środowisku Adobe Flash Builder) pojawienie się nieobsługiwanego błędu powoduje wyświetlenie komunikatu z ostrzeżeniem.

Wyjątek
Błąd, który wystąpił w trakcie wykonywania aplikacji, i którego środowisko wykonawcze Flash nie jest w stanie samodzielnie obsłużyć.

Ponowne generowanie
Gdy kod użytkownika przechwyci wyjątek, środowisko wykonawcze Flash nie powiadamia pozostałych obiektów o tym, że wyjątek wystąpił. Jeśli powiadomienie o wyjątku jest istotne dla pozostałych obiektów, należy ponownie wygenerować wyjątek w kodzie, aby rozpocząć proces powiadamiania raz jeszcze.

Synchroniczne
Polecenie programu, np. wywołanie metody, które zapewnia natychmiastowy wynik (lub natychmiast generuje błąd), co oznacza, że reakcji można użyć wewnątrz tego samego bloku kodu.

Generowanie
Powiadomienie środowiska wykonawczego Flash (a w konsekwencji powiadomienie pozostałych obiektów i kodu ActionScript) o pojawieniu się błędu nazywane jest generowaniem błędu.