Ponieważ wiele aplikacji można uruchomić bez tworzenia logiki do obsługi błędów, programiści są wystawieni na pokusę odkładania na później tworzenia obsługi błędów w ich aplikacjach. Jednak brak obsługi błędów może łatwo opóźnić działanie aplikacji lub spowodować zniechęcenie użytkownika, jeśli coś nie zadziała w oczekiwany sposób. W języku ActionScript 2.0 istnieje klasa Error, która umożliwia wbudowanie logiki do niestandardowych funkcji w celu wygenerowania wyjątku z konkretnym komunikatem. Ponieważ obsługa błędów jest czynnikiem krytycznym przy tworzeniu aplikacji przyjaznych dla użytkownika, język ActionScript 3.0 zawiera rozwiniętą architekturę do przechwytywania błędów.
Uwaga:
Podręcznik
Skorowidz języka ActionScript 3.0 dla platformy Adobe Flash
zawiera opisy wyjątków zgłaszanych przez różne metody, ale nie zawiera informacji o wszystkich możliwych wyjątkach każdej metody. Metoda może generować wyjątek dla błędów składniowych lub innych problemów, które nie zostały osobno przedstawione w opisie metody, nawet jeśli w opisie umieszczone zostały niektóre z wyjątków generowanych przez metodę.
Elementy obsługi błędów w języku ActionScript 3.0
Język ActionScript 3.0 zawiera wiele narzędzi do obsługi błędów, w tym:
-
Klasy Error. Język ActionScript 3.0 zawiera szeroką gamę klas Error, które rozszerzają zakres sytuacji, jakie mogą generować obiekty błędów. Każda klasa Error pomaga aplikacjom obsłużyć i zareagować na konkretne warunki błędu, w zależności od tego, czy odnoszą się one do błędów systemowych (np. warunek MemoryError), błędów kodowania (np. warunek ArgumentError), błędów sieciowych lub komunikacyjnych (np. warunek URIError) lub innych sytuacji. Więcej informacji na temat każdej z klas zawiera sekcja
Porównywanie klas Error
.
-
Mniej „cichych” błędów. W poprzednich wersjach programu Flash Player błędy były generowane i zgłaszane tylko w przypadku jawnego użycia instrukcji
throw
. W środowisku Flash Player 9 i późniejszych środowiskach wykonawczych Flash rodzime metody i właściwości ActionScript wywołują błędy środowiska wykonawczego. Te błędy umożliwiają bardziej skuteczniejszą obsługę wyjątków, ponieważ reagują osobno na każdy wyjątek.
-
Usuwanie komunikatów o błędach wyświetlanych w czasie debugowania. Podczas korzystania ze środowiska wykonawczego Flash w wersji z debugerem problematyczny kod lub sytuacja wygenerują komunikaty o błędach, które ułatwiają identyfikowanie przyczyn niepowodzenia bloku kodu. Te komunikaty znacznie usprawniają usuwanie błędów. Więcej informacji zawiera sekcja
Praca z wersjami środowisk wykonawczych Flash wyposażonych w debuger
.
-
Dokładne błędy umożliwiają usuwanie komunikatów o błędach wyświetlanych dla użytkowników. We wcześniejszych wersjach programu Flash Player metoda
FileReference.upload()
zwracała wartość logiczną
false
, jeśli wywołanie metody
upload()
zakończyło się niepomyślnie, wskazując jeden z pięciu możliwych błędów Jeśli w języku ActionScript 3.0 po wywołaniu metody
upload()
wystąpi błąd, dostępne są cztery błędy, które są pomocne w wyświetleniu użytkownikom końcowym dokładniejszych komunikatów o błędach.
-
Wyrafinowana obsługa błędów. Różne błędy generowane są dla wielu wspólnych sytuacji. Na przykład: w języku ActionScript 2.0 przed wypełnieniem obiektu FileReference właściwość
name
ma wartość
null
(dlatego przed użyciem lub wyświetleniem właściwości
name
należy upewnić się, że wartość została ustawiona i nie jest nią wartość
null
). W języku ActionScript 3.0 jeśli nastąpi próba uzyskania dostępu do właściwości
name
, zanim właściwość została wypełniona, program Flash Player lub środowisko AIR generuje wyjątek IllegalOperationError, które informuje o tym, że wartość nie została ustawiona i w celu obsługi błędu można użyć bloków
try..catch..finally
. Więcej informacji zawiera sekcja
Korzystanie z instrukcji try..catch..finally
.
-
Brak znaczących wad w wydajności. Użycie bloków
try..catch..finally
do obsługi błędów angażuje niewiele lub w ogóle ich nie angażuje dodatkowych zasobów w porównaniu z poprzednimi wersjami języka ActionScript.
-
Klasa ErrorEvent, która umożliwia tworzenie detektorów dla konkretnych asynchronicznych zdarzeń błędu. Więcej informacji zawiera sekcja
Reagowanie na zdarzenia błędu i status
Strategie obsługi błędów
Jeśli logika obsługi błędów nie została wbudowana w kod, aplikacja będzie działać pomyślnie tak długo, aż nie natknie się na problematyczny warunek. Jeśli jednak programista nie obsłuży aktywnie błędów, a aplikacja natkanie się na problem, użytkownicy nigdy się nie dowiedzą, dlaczego aplikacja kończy się niepowodzeniem.
Istnieją różne podejścia do obsługi błędów w aplikacji. Poniższa lista podsumowuje trzy główne sposoby obsługi błędów:
-
Użycie instrukcji
try..catch..finally
. Te instrukcje powodują przechwycenie synchronicznych błędów w momencie ich wystąpienia. Instrukcje można zagnieździć w hierarchii w celu przechwycenia wyjątków na różnych poziomach wykonywania kodu. Więcej informacji zawiera sekcja
Korzystanie z instrukcji try..catch..finally
.
-
Utworzenie niestandardowych obiektów błędu. Klasy Error można użyć w celu utworzenia niestandardowych obiektów błędu w celu śledzenia w aplikacji konkretnych operacji, które nie są obsługiwane przez wbudowane typy błędów. Następnie instrukcji
try..catch..finally
można użyć w niestandardowych obiektach błędu. Więcej informacji zawiera sekcja
Tworzenie niestandardowych klas błędu
.
-
Napisanie detektorów i modułów obsługi zdarzeń w celu reakcji na zdarzenia błędu. Korzystając z tej strategii, można utworzyć globalne moduły obsługi błędu, które umożliwiają obsługę podobnych zdarzeń bez duplikowania dużej ilości kodu w blokach
try..catch..finally
. Użycie tego podejścia zwiększa prawdopodobieństwo przechwycenia asynchronicznych błędów. Więcej informacji zawiera sekcja
Reagowanie na zdarzenia błędu i status
.
|
|
|