Ações avançadas de tratamento de erros para aplicações móveis
O MobileTogether 2.1 inclui novas ações de tratamento de erros "Try/Throw" e "Catch" para aplicações móveis, permitindo que os desenvolvedores criem rotinas de tratamento de erros sofisticadas que melhoram a experiência do utilizador final. Por exemplo, se uma aplicação pretende conectar-se a um serviço web de terceiros, mas o servidor não está disponível, as ações de tratamento de erros permitem uma recuperação suave.
As ações de tratamento de erros do MobileTogether para aplicações móveis funcionam da mesma forma em todas as plataformas, poupando tempo aos desenvolvedores, uma vez que não é necessário personalizar o tratamento de erros com base nos requisitos de cada sistema operativo móvel.

No nosso artigo anterior, intitulado "Serviços REST como fontes de dados para aplicações móveis", utilizamos uma aplicação de demonstração que faz uma chamada a um serviço REST hospedado pela USGS para obter valores de altitude precisos para coordenadas geográficas.
Podemos usar os blocos Try/Catch para gerir dois tipos diferentes de erros que podem ocorrer durante a execução do serviço REST:
- Podemos encontrar um erro de conexão com o servidor da USGS
- Podemos receber um valor de elevação de -1000000, o que significa que o USGS (Serviço Geológico dos Estados Unidos) está a indicar que não possui dados de elevação para as coordenadas fornecidas
Podemos colocar toda a chamada do serviço REST e as ações subsequentes para manipular os dados dentro de um bloco "Try", como demonstrado aqui:

Se a ligação ao serviço web falhar, todas as ações subsequentes dentro da ação "Try" serão interrompidas. Se não obtivermos dados do USGS, não faz sentido tentar executar a ação "Atualizar Nó(s)" mencionada acima. Neste exemplo, apenas uma ação seria interrompida, mas é possível incluir várias ações, grupos de ações, ou até mesmo grupos de ações que chamam outros grupos de ações dentro da ação "Try".
Da mesma forma, a ação "Catch" também pode executar múltiplas operações que só são executadas quando ocorre um erro. Na captura de ecrã acima, a ação "Catch" exibe uma caixa de mensagem que indica que a ligação falhou e executa a ação "Atualizar Nó(s)" utilizando o mesmo valor de altitude que a USGS forneceria em caso de um erro de intervalo inválido. Naturalmente, pode colocar múltiplas ações, grupos de ações, ou até mesmo grupos de ações que chamam outros grupos de ações dentro da ação "Catch", tal como na ação "Try".
Controlo de fluxo mais complexo com ações de tratamento de erros para aplicações móveis
O verdadeiro poder do tratamento de erros com "try/catch/throw" começa a ser evidente quando uma aplicação móvel exige uma lógica de programação mais complexa.
Considere o cenário em que um grupo de ações contém uma série de operações – como comandos de base de dados ou chamadas a serviços web – que precisam ser executadas sequencialmente, e onde cada chamada depende do sucesso da anterior. Rapidamente, torna-se demasiado complicado verificar o resultado de cada etapa numa estrutura "se-então". Em vez disso, pode definir de forma clara e elegante uma ação na base de dados para que lance uma exceção em caso de erro, e, em seguida, ter um único bloco de tratamento de exceções no final, onde o erro é exibido.
Esta captura de ecrã mostra o uso de "try/catch" numa aplicação móvel que permite explorar e analisar automaticamente relatórios financeiros resumidos de empresas públicas dos EUA, extraídos dos documentos XBRL disponíveis na base de dados EDGAR da SEC

Se alguma das cinco consultas à base de dados falhar, um erro é gerado, o restante das ações dentro do bloco "Try" são ignoradas, e a variável que contém a mensagem de erro indica qual consulta falhou.
Tratamento de erros aninhado com blocos try/catch
Pode até definir um tratamento de erros "try/catch" num grupo de ações e permitir que o erro ocorra num subgrupo de ações separado, que é chamado a partir da ação principal. Na verdade, isso pode ser feito de forma aninhada e o erro pode ocorrer em qualquer ação que esteja aninhada várias vezes.
Nesse ponto, o controlo é devolvido diretamente para o ramo "catch" do manipulador de erros externo, onde o erro é processado, exatamente como funciona o mecanismo try/catch/throw em outras linguagens de programação.
O programa MobileTogether Designer, que inclui funcionalidades de tratamento de erros (try/catch/throw) para aplicações móveis, é gratuito – descarregue a sua cópia agora