---
title: "Zaawansowane mechanizmy obsługi błędów dla aplikacji mobilnych"
date: "2016-05-03"
categories: 
  - "development"
  - "mobile"
  - "software"
tags: 
  - "error-handling"
  - "mobile-development"
  - "mobiletogether"
description: Wersja 2.1 MobileTogether wprowadza zaawansowane funkcje obsługi błędów "Try/Throw" i "Catch" dla aplikacji mobilnych, umożliwiając programistom efektywne zarządzanie błędami na różnych platformach.
---
Status: #blog

Tags:  #error-handling #mobile-development #mobiletogether

Categories: [development](/blog/pl/category/development.md) | [mobile-development](/blog/pl/category/mobile-development.md) 
# 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.

![Obsługa błędów 5](/blog/images/error_handling5.png)

<!--more-->

W naszym wcześniejszym wpisie, zatytułowanym: [Usługi REST jako źródła danych dla aplikacji mobilnych](https://www.altova.com/blog/rest-services-as-data-sources-for-mobile-apps/) 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:

![Bardziej zaawansowane zastosowanie bloków try-catch w obsłudze błędów w aplikacjach mobilnych](/blog/images/more-complicated-try-catch.png)

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)

![Seria DB – obsługa wyjątków (try-catch)](/blog/images/DB-series-try-catch.png)

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](https://www.altova.com/pl/download/mobiletogether.html)
