Zaawansowane mechanizmy obsługi błędów dla aplikacji mobilnych
Wersja 2.1 MobileTogether zawiera nowe funkcje obsługi błędów "Try/Throw" i "Catch" dla aplikacji mobilnych, umożliwiając programistom tworzenie zaawansowanych mechanizmów obsługi błędów, które poprawiają komfort użytkowania aplikacji. Na przykład, jeśli aplikacja próbuje połączyć się z zewnętrzną usługą internetową, ale serwer jest niedostępny, funkcje obsługi błędów pozwalają na płynne odzyskiwanie i kontynuowanie działania.
Mechanizmy obsługi błędów w MobileTogether, przeznaczone do aplikacji mobilnych, działają w ten sam sposób na wszystkich platformach, co oszczędza czas programistom, ponieważ nie ma potrzeby dostosowywania obsługi błędów do specyficznych wymagań każdego systemu operacyjnego dla urządzeń mobilnych.

W naszym wcześniejszym wpisie, zatytułowanym: Usługi REST jako źródła danych dla aplikacji mobilnych Wykorzystano aplikację demonstracyjną, która korzysta z usługi REST udostępnianej przez USGS, aby uzyskać dokładne wartości wysokości dla określonych współrzędnych geograficznych.
Możemy użyć konstrukcji Try/Catch, aby obsłużyć dwa różne rodzaje błędów, które mogą wystąpić w wyniku działania usługi REST:
- Możemy napotkać błąd połączenia z serwerem USGS
- Moglibyśmy otrzymać wartość wysokości równą -1000000, co oznacza, że USGS informuje nas, że nie posiada danych wysokościowych dla podanych współrzędnych
Możemy umieścić całe wywołanie usługi REST oraz kolejne operacje związane z manipulacją danymi w bloku Try, jak pokazano poniżej:

Jeśli połączenie z usługą internetową nie powiedzie się, wszystkie kolejne działania wykonywane w bloku "Try" zostaną przerwane. Jeśli nie otrzymamy żadnych danych z USGS, nie ma sensu próbować wykonać akcję "Aktualizuj węzeł(e)", o której mowa powyżej. W tym przykładzie zostanie przerwana tylko jedna akcja, ale można umieścić w bloku "Try" wiele akcji, grup akcji, a nawet grupy akcji, które wywołują inne grupy akcji.
Podobnie, akcja "Catch" może również wykonywać wiele operacji, które są uruchamiane tylko w przypadku wystąpienia błędu. Na powyższym zrzucie ekranu, akcja "Catch" wyświetla okno z komunikatem o niepowodzeniu połączenia i wykonuje aktualizację węzła/węzłów, używając tej samej wartości wysokości, jaką USGS podałby w przypadku błędu przekraczającego dopuszczalny zakres. Oczywiście, można umieścić wiele akcji, grup akcji, a nawet grupy akcji, które wywołują inne grupy akcji, wewnątrz akcji "Catch", podobnie jak w przypadku bloku "Try".
Bardziej zaawansowane mechanizmy kontroli przepływu z funkcjami obsługi błędów dla aplikacji mobilnych
Prawdziwa siła mechanizmów obsługi błędów try/catch/throw zaczyna się przejawiać, gdy aplikacja mobilna wymaga bardziej złożonej logiki programowej.
Rozważmy przypadek, w którym jedna grupa operacji zawiera szereg działań – takich jak polecenia bazy danych lub wywołania usług internetowych – które muszą być wykonane sekwencyjnie, a każde wywołanie zależy od powodzenia poprzedniego. Szybko okazuje się, że sprawdzanie wyniku każdego kroku w instrukcji warunkowej "if-else" staje się bardzo skomplikowane. Zamiast tego, można w sposób przejrzysty i elegancki zdefiniować akcję bazy danych, która w przypadku wystąpienia błędu wywołuje wyjątek, a następnie umieścić jeden, centralny blok "catch" na końcu, w którym wyświetlany jest komunikat o błędzie.
Ten zrzut ekranu pokazuje zastosowanie mechanizmu try/catch w aplikacji mobilnej, która umożliwia automatyczne pobieranie i analizowanie podstawowych raportów finansowych amerykańskich spółek notowanych na giełdzie, bezpośrednio z plików XBRL przechowywanych w bazie danych EDGAR amerykańskiej Komisji Papierów Wartościowych i Giełd (SEC)

Jeśli którakolwiek z pięciu zapytań do bazy danych się nie powiedzie, zostanie zgłoszony błąd, pozostałe operacje w bloku "Try" zostaną pominięte, a zmienna przechowująca tekst komunikatu o błędzie wskaże, które zapytanie się nie powiodło.
Obsługa błędów za pomocą zagnieżdżonych bloków try/catch
Można nawet zdefiniować obsługę błędów za pomocą bloków try/catch w jednej grupie akcji, a następnie wywołać inną, podrzędną grupę akcji, w której wystąpi błąd. W rzeczywistości, ta struktura może być zagnieżdżona bardzo głęboko, a błąd może pojawić się w dowolnym miejscu w akcji zagnieżdżonej wielokrotnie.
W tym momencie kontrola jest bezpośrednio przekazywana z powrotem do bloku "catch" zewnętrznego obsługi błędów, gdzie błąd jest przetwarzany, dokładnie tak, jak to działa w przypadku konstrukcji try/catch/throw w innych językach programowania.
Program MobileTogether Designer, który oferuje funkcje obsługi błędów (try/catch/throw) dla aplikacji mobilnych, jest dostępny bezpłatnie – pobierz swoją kopię już teraz