Gestione degli errori in ActionScript 3.0

Flash Player 9 e versioni successive, Adobe AIR 1.0 e versioni successive

Dato che molte applicazioni possono essere eseguite senza logica di gestione degli errori, gli sviluppatori sono tentati di rimandare la creazione della logica di gestione degli errori all'interno delle loro applicazioni. Tuttavia, in assenza di un'adeguata procedura di gestione degli errori, è facile che un'applicazione si blocchi e non funzioni come previsto, con il risultato di esasperare l'utente. ActionScript 2.0 è dotato della classe Error che permette di integrare la logica nelle funzioni personalizzate in modo che generi un'eccezione accompagnata da un messaggio specifico. Poiché la gestione degli errori è un requisito fondamentale per sviluppare applicazioni di facile utilizzo da parte degli utenti, ActionScript 3.0 mette a disposizione un'architettura estesa per la rilevazione degli errori.

Nota: sebbene nella Guida di riferimento di Adobe ActionScript 3.0 per la piattaforma Adobe Flash siano documentate le eccezioni generate da molti metodi, è possibile che non siano incluse tutte le eccezioni possibili per ciascun metodo. Un metodo potrebbe generare un'eccezione per errori di sintassi o altri problemi non esplicitamente associati alla descrizione del metodo, anche se la descrizione comprende alcune eccezioni generate dal metodo.

Elementi utilizzati da ActionScript 3.0 per la gestione degli errori

ActionScript 3.0 utilizza vari strumenti per la gestione degli errori:

  • Classi Error. ActionScript 3.0 include un'ampia gamma di classi Error per incrementare il numero di situazioni che possono produrre oggetti di errore. Ogni classe Error aiuta le applicazioni a gestire e a rispondere a condizioni di errore specifiche, siano esse relative a errori di sistema (come la condizione MemoryError), errori del codice (come la condizione ArgumentError), errori di rete e comunicazione (come la condizione URIError) o ad altre situazioni. Per ulteriori informazioni su ciascuna classe, vedete Confronto tra le classi di tipo Error.

  • Meno errori non catturati. Nelle versioni precedenti di Flash Player, gli errori venivano generati e comunicati solo se si utilizzava esplicitamente l'istruzione throw. In Flash Player 9 e versioni successive del runtime Flash, le proprietà e i metodi ActionScript nativi generano errori in fase di runtime. Questi errori consentono di gestire in modo più efficace ogni singola eccezione quando si verifica.

  • Visualizzazione di messaggi di errore chiari durante le operazioni di debug. Quando utilizzate la versione debugger del runtime Flash, situazioni o righe di codice problematiche generano messaggi di errore significativi che permettono di individuare facilmente il problema. Questi messaggi rendono più efficiente la correzione degli errori. Per ulteriori informazioni, vedete Utilizzo delle versioni debugger dei runtime Flash

  • Indicazione precisa degli errori nei messaggi visualizzati agli utenti. Nelle versioni precedenti di Flash Player, il metodo FileReference.upload() restituiva il valore booleano false quando la chiamata al metodo upload() non andava a buon fine e indicava cinque possibili errori. Se si verifica un errore legato alla chiamata del metodo upload() in ActionScript 3.0, quattro errori specifici consentono di visualizzare agli utenti messaggi di errore più accurati.

  • Gestione degli errori sofisticata. In conseguenza di molte situazioni comuni, possono essere generati errori distinti. Ad esempio, in ActionScript 2.0, se l'oggetto FileReference non è ancora stato impostato, la proprietà name ha il valore null, perciò, per poter utilizzare o visualizzare la proprietà name, verificate che il suo valore non sia impostato su null. In ActionScript 3.0, se tentate di accedere alla proprietà name prima di averla impostata, Flash Player e AIR generano un errore IllegalOperationError che informa l'utente che il valore della proprietà non è impostato e che può utilizzare i blocchi try..catch..finally per gestire l'errore. Per ulteriori informazioni, vedete Utilizzo delle istruzioni try..catch..finally.

  • Nessuno svantaggio significativo in termini di prestazioni. L'utilizzo di blocchi try..catch..finally per gestire gli errori non richiede quasi o affatto risorse supplementari rispetto alle versioni precedenti di ActionScript.

  • Classe ErrorEvent che permette di generare listener per errori asincroni specifici. Per ulteriori informazioni, vedete Risposte a eventi errore e a errori basati sullo stato

Strategie di gestione degli errori

Fintanto che non incontrano intoppi, le applicazioni possono essere eseguite correttamente anche se il loro codice non prevede una logica per la gestione degli errori. Tuttavia, quando si verifica un problema in un'applicazione che non prevede la gestione attiva degli errori, gli utenti non sapranno mai perché l'applicazione si blocca.

Si può eseguire la gestione degli errori delle applicazioni in base a strategie diverse. Ecco le tre principali opzioni di cui dispone lo sviluppatore:

  • Utilizzo di istruzioni try..catch..finally. Queste istruzioni rilevano gli errori sincroni nel momento in cui si verificano. Nidificando le istruzioni a vari livelli della gerarchia potete catturare le eccezioni generate ai vari livelli di esecuzione del codice. Per ulteriori informazioni, vedete Utilizzo delle istruzioni try..catch..finally.

  • Creazione di oggetti errore personalizzati. Utilizzate la classe Error per creare oggetti errore personalizzati che rilevino operazioni specifiche dell'applicazione non coperte dai tipi di errore incorporati. Quindi potete utilizzare le istruzioni try..catch..finally negli oggetti errore personalizzati. Per ulteriori informazioni, vedete Creazione di classi di errore personalizzate.

  • Scrittura di listener e gestori di eventi che rispondano agli errori. Questa strategia consente di creare gestori di eventi globali che consentono di gestire eventi simili senza duplicare grandi porzioni di codice nei blocchi try..catch..finally. Questo approccio offre anche maggiori possibilità di catturare gli errori asincroni. Per ulteriori informazioni, vedete Risposte a eventi errore e a errori basati sullo stato