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
|
|
|