---
title: "Geavanceerde acties voor foutafhandeling in mobiele apps"
date: "2016-05-03"
categories: 
  - "development"
  - "mobile"
  - "software"
tags: 
  - "error-handling"
  - "mobile-development"
  - "mobiletogether"
description: MobileTogether 2.1 introduceert geavanceerde acties voor foutafhandeling met "Try/Throw" en "Catch" voor mobiele apps, waardoor ontwikkelaars fouten effectief kunnen beheren op verschillende platforms.
---
Status: #blog

Tags:  #error-handling #mobile-development #mobiletogether

Categories: [development](/blog/nl/category/development.md) | [mobile-development](/blog/nl/category/mobile-development.md) 
# Geavanceerde acties voor foutafhandeling in mobiele apps

MobileTogether 2.1 bevat nieuwe acties voor foutafhandeling, namelijk "Try/Throw" en "Catch", die gebruikt kunnen worden in mobiele apps. Hierdoor kunnen ontwikkelaars geavanceerde routines voor foutafhandeling creëren, wat de gebruikerservaring verbetert. Bijvoorbeeld, als een app verbinding wil maken met een webdienst van een derde partij, maar de server niet beschikbaar is, maken de acties voor foutafhandeling een soepele oplossing mogelijk.

De foutafhandeling van MobileTogether voor mobiele apps werkt op dezelfde manier voor alle platforms, waardoor ontwikkelaars tijd besparen, omdat er geen behoefte is om de foutafhandeling aan te passen aan de specifieke vereisten van elk mobiel besturingssysteem.

![foutafhandeling5](/blog/images/error_handling5.png)

<!--more-->

In onze eerdere post, getiteld "[REST-services als databronnen voor mobiele apps](https://www.altova.com/blog/rest-services-as-data-sources-for-mobile-apps/)", gebruikten we een demo-app die een REST-service aanroept, gehost door USGS, om nauwkeurige hoogtewaarden te verkrijgen voor geografische coördinaten.

We kunnen de constructie "Try/Catch" gebruiken om twee verschillende soorten fouten te verwerken die kunnen optreden tijdens de uitvoering van de REST-service:

- Het kan voorkomen dat er een verbindingsfout optreedt met de server van de USGS
- We kunnen een hoogte waarde van -1000000 ontvangen, wat betekent dat de USGS aangeeft geen hoogtegegevens te hebben voor de opgegeven coördinaten

We kunnen de volledige REST-serviceaanroep en de daaropvolgende acties om gegevens te manipuleren, binnen een "Try"-blok plaatsen, zoals hieronder wordt weergegeven:

![Complexere try-catch constructies bij foutafhandeling in mobiele applicaties](/blog/images/more-complicated-try-catch.png)

Als de verbinding met de webservice mislukt, worden alle volgende acties binnen de "Probeer"-actie afgebroken. Als we geen gegevens ontvangen van de USGS, is het zinloos om te proberen de actie "Knooppunten bijwerken" uit te voeren, zoals hierboven aangegeven. In dit voorbeeld wordt slechts één actie afgebroken, maar u kunt meerdere acties, actiegroepen, of zelfs actiegroepen die andere actiegroepen aanroepen, binnen de "Probeer"-actie plaatsen.

Op dezelfde manier kan de "Catch"-actie ook meerdere bewerkingen uitvoeren die alleen worden uitgevoerd wanneer er een fout optreedt. In de bovenstaande screenshot toont "Catch" een berichtvenster dat aangeeft dat de verbinding is mislukt, en het voert de bewerking "Update Node(s)" uit met dezelfde hoogtewaarde die de USGS zou verstrekken bij een foutmelding. Uiteraard kunt u meerdere acties, actiegroepen, of zelfs actiegroepen die andere actiegroepen aanroepen, binnen de "Catch"-actie plaatsen, net als bij de "Try"-actie.

### Geavanceerdere stroombeheerfunctionaliteit met foutafhandelingsmogelijkheden voor mobiele apps

De werkelijke kracht van foutafhandeling met behulp van try/catch/throw komt pas echt tot uiting wanneer een mobiele app complexere programmeerlogica vereist.

Stel u voor dat een actiegroep een reeks bewerkingen bevat – zoals databasecommando's of aanroepen van webdiensten – die allemaal in een bepaalde volgorde moeten worden uitgevoerd, en waarbij elke aanroep afhankelijk is van het succes van de vorige. Het wordt al snel erg omslachtig om voor elke stap het resultaat te controleren met een if-else statement. In plaats daarvan kunt u op een overzichtelijke en elegante manier een databaseactie definiëren die een foutmelding genereert als er een probleem is, en vervolgens één centrale "catch"-blok aan het einde plaatsen waar de fout wordt weergegeven.

Deze screenshot toont het gebruik van try/catch in een mobiele applicatie waarmee u automatisch Amerikaanse beursgenoteerde bedrijven kunt onderzoeken en analyseren. De applicatie haalt de belangrijkste financiële rapporten direct uit de XBRL-bestanden in de EDGAR-database van de Amerikaanse toezichthouder SEC

![DB-serie - try-catch blok](/blog/images/DB-series-try-catch.png)

Als een van de vijf databasevragen mislukt, wordt er een foutmelding gegenereerd, worden de overige acties binnen de "Try"-blokken overgeslagen, en de variabele die de foutmelding bevat, geeft aan welke query is mislukt.

**Geneste foutafhandeling met try/catch-blokken**

U kunt zelfs een foutafhandeling (try/catch) definiëren in één actiegroep en de fout laten optreden in een aparte sub-actiegroep die wordt aangeroepen vanuit de hoofdactie. Sterker nog, dit kan diep genest zijn, en de fout kan zich ergens voordoen in een actie die meerdere keren is genest.

Op dat moment wordt de controle direct teruggegeven aan de "catch"-sectie van de buitenste foutafhandeling, waar de fout wordt verwerkt, precies zoals de "try/catch/throw"-constructie werkt in andere programmeertalen.

De MobileTogether Designer, met functies voor foutafhandeling (try/catch/throw) voor mobiele apps, is gratis – [Download uw exemplaar nu](https://www.altova.com/nl/download/mobiletogether.html)
