Azioni avanzate per la gestione degli errori nelle applicazioni mobile
MobileTogether 2.1 include nuove azioni di gestione degli errori "Try/Throw" e "Catch" per le applicazioni mobile, che consentono agli sviluppatori di creare routine di gestione degli errori avanzate, migliorando l'esperienza dell'utente finale. Ad esempio, se un'applicazione desidera connettersi a un servizio web di terze parti, ma il server non è disponibile, le azioni di gestione degli errori consentono una gestione elegante dell'errore.
Le funzionalità di gestione degli errori di MobileTogether per le applicazioni mobile funzionano allo stesso modo su tutte le piattaforme, risparmiando tempo agli sviluppatori, poiché non è necessario personalizzare la gestione degli errori in base alle specifiche di ciascun sistema operativo mobile.

Nel nostro precedente articolo, intitolato "Servizi REST come fonti di dati per applicazioni mobile", abbiamo utilizzato un'applicazione dimostrativa che chiama un servizio REST ospitato da USGS per ottenere valori di altitudine precisi a partire dalle coordinate geografiche.
Possiamo utilizzare i blocchi Try/Catch per gestire due tipi diversi di errori che potrebbero verificarsi durante l'esecuzione del servizio REST:
- Potremmo riscontrare un errore di connessione con il server dell'USGS
- Potremmo ricevere un valore di altitudine pari a -1000000, il che significa che l'USGS ci sta comunicando di non disporre di dati altimetrici per le coordinate fornite
Possiamo inserire l'intera chiamata al servizio REST e le successive azioni per manipolare i dati all'interno di un blocco "Try", come mostrato qui:

Se la connessione al servizio web fallisce, tutte le azioni successive all'interno dell'azione "Try" vengono interrotte. Se non riceviamo alcun dato dall'USGS, non ha senso tentare l'azione "Aggiorna nodo/i" menzionata in precedenza. In questo esempio, una singola azione verrebbe interrotta, ma è possibile inserire all'interno dell'azione "Try" più azioni, gruppi di azioni, o persino gruppi di azioni che richiamano altri gruppi di azioni.
Analogamente, l'azione "Catch" può eseguire diverse operazioni che vengono eseguite solo in caso di errore. Nello screenshot precedente, "Catch" visualizza una finestra di messaggio che indica che la connessione è fallita e, contemporaneamente, esegue l'aggiornamento del/dei nodi utilizzando lo stesso valore di altitudine che l'USGS fornirebbe in caso di errore dovuto a valori al di fuori dell'intervallo consentito. Naturalmente, è possibile inserire diverse azioni, gruppi di azioni, o persino gruppi di azioni che richiamano altri gruppi di azioni all'interno dell'azione "Catch", proprio come si fa con l'azione "Try".
Controllo del flusso più complesso con azioni di gestione degli errori per applicazioni mobile
La vera efficacia della gestione degli errori tramite i costrutti try/catch/throw si manifesta pienamente quando un'applicazione mobile richiede una logica di programmazione più complessa.
Consideriamo il caso in cui un gruppo di azioni contenga una serie di operazioni – come comandi di database o chiamate a servizi web – che devono essere eseguite in sequenza, e in cui ogni chiamata dipende dal successo della precedente. Diventa rapidamente troppo complicato verificare il risultato di ogni passaggio all'interno di una struttura if-else. Invece, è possibile definire in modo chiaro ed elegante un'azione di database che generi un'eccezione in caso di errore, e quindi gestire l'eccezione in un unico punto, dove l'errore viene visualizzato.
Questa schermata mostra l'utilizzo dei blocchi try/catch in un'applicazione mobile che consente di esplorare e analizzare automaticamente i principali rapporti finanziari delle società statunitensi, estratti dai documenti XBRL presenti nel database EDGAR della SEC

Se una delle cinque query al database fallisce, viene generato un errore, le restanti azioni all'interno del blocco "Try" vengono saltate, e la variabile che contiene il testo del messaggio di errore indica quale query ha fallito.
Gestione degli errori con blocchi try/catch nidificati
È possibile definire un gestore di errori try/catch in un gruppo di azioni e consentire che l'eccezione venga sollevata in un sottogruppo di azioni separato, che viene chiamato dal gruppo di azioni principale. In effetti, questa struttura può essere nidificata in profondità e l'errore potrebbe verificarsi in un'azione nidificata più volte.
A quel punto, il controllo viene restituito direttamente alla sezione "catch" del gestore degli errori esterno, dove l'errore viene elaborato, esattamente come funziona il meccanismo try/catch/throw in altri linguaggi di programmazione.
Il software MobileTogether Designer, che include funzionalità di gestione degli errori (try/catch/throw) per le applicazioni mobile, è gratuito: scaricate subito la vostra copia