Obsługa błędów w języku ActionScript 3.0

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

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 .