Confronto tra le classi di tipo Error

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

ActionScript comprende varie classi Error predefinite. Tuttavia, potete anche utilizzare le stesse classi Error nel vostro codice. Esistono due tipi principali di classi Error in ActionScript 3.0: classi Error di base ActionScript e classi Error del pacchetto flash.error. Le classi del pacchetto flash.error contengono classi supplementari introdotte in ActionScript 3.0 per agevolare lo sviluppo e il debug delle applicazioni.

Classi Error di base

Le classi Error di base comprendono le classi Error, ArgumentError, EvalError, RangeError, ReferenceError, SecurityError, SyntaxError, TypeError, URIError e VerifyError. Ognuna di queste è posizionata nello spazio dei nomi di livello superiore.

Nome classe

Descrizione

Note

Error

La classe Error è utilizzata per generare eccezioni e rappresenta la classe base per tutte le altre classi di eccezioni definite in ECMAScript: EvalError, RangeError, ReferenceError, SyntaxError, TypeError e URIError.

La classe Error funge da classe base per tutti gli errori runtime generati e si consiglia di usarla come modello per tutte le classi errore personalizzate.

ArgumentError

La classe ArgumentError rappresenta un errore che si verifica quando i parametri forniti durante la chiamata di una funzione non corrispondono ai parametri definiti per la funzione stessa.

Di seguito sono riportati esempi di ArgumentError:

  • A un metodo vengono forniti troppi o troppo pochi argomenti.

  • L'argomento previsto doveva essere membro di un'enumerazione, ma non lo è.

EvalError

Un'eccezione EvalError viene generata quando si passano dei parametri alla funzione di costruzione della classe Function o se il codice utente chiama la funzione eval().

A differenza delle versioni precedenti, ActionScript 3.0 non supporta la funzione eval() e qualsiasi tentativo di utilizzarla genera un errore.

Le versioni precedenti di Flash Player utilizzavano la funzione eval() per accedere per nome a variabili, proprietà, oggetti e clip filmato.

RangeError

Un'eccezione RangeError viene generata quando un valore numerico è al di fuori dell'intervallo accettabile.

Ad esempio, la classe Timer genera un'eccezione RangeError se il ritardo specificato ha un valore negativo o non finito. Un'eccezione RangeError viene generata anche se si tenta di aggiungere un oggetto di visualizzazione a una profondità non valida.

ReferenceError

Un'eccezione ReferenceError viene generata quando si tenta un riferimento a una proprietà undefined su un oggetto chiuso (non dinamico). Le versioni precedenti del compilatore ActionScript non generavano un errore quando si tentava di accedere a una proprietà undefined. Tuttavia, in questa condizione, ActionScript 3.0 rileva un'eccezione ReferenceError.

Le eccezioni relative a variabili undefined segnalano la presenza di potenziali problemi e aiutano a migliorare la qualità del software. Tuttavia, se non siete abituati a inizializzare le variabili, questo nuovo comportamento di ActionScript richiede qualche modifica nella modalità di scrittura del codice.

SecurityError

Un'eccezione SecurityError viene generata quando si verifica una violazione della sicurezza e l'accesso viene negato.

Di seguito sono riportati esempi di SecurityError:

  • Viene effettuato un accesso non autorizzato a una proprietà o una chiamata non consentita a un metodo al di fuori di una funzione di sicurezza sandbox.

  • Viene effettuato un tentativo di accesso a un URL non autorizzato dalla funzione di sicurezza sandbox.

  • Si è tentato di effettuare una connessione socket a una porta, ma il file di criterio socket necessario non è disponibile.

  • Viene effettuato un tentativo di accesso alla fotocamera o al microfono dell'utente e l'accesso viene rifiutato dall'utente.

SyntaxError

Un'eccezione SyntaxError viene generata quando si verifica un errore di analisi nel codice ActionScript.

Un errore SyntaxError viene generato nelle seguenti circostanze:

  • ActionScript genera eccezioni SyntaxError quando la classe RegExp analizza un'espressione regolare non valida.

  • ActionScript genera eccezioni SyntaxError quando la classe XMLDocument analizza codice XML non valido.

TypeError

Un'eccezione TypeError viene generata quando il tipo effettivo di un operando è diverso dal tipo previsto.

Un errore TypeError viene generato nelle seguenti circostanze:

  • Non è stato possibile assegnare forzatamente un parametro effettivo di una funzione o di un metodo al tipo di parametro formale.

  • Un valore assegnato a una variabile non può essere assegnato forzatamente al tipo della variabile.

  • Il lato destro dell'operatore is o instanceof non è di tipo valido.

  • La parola chiave super viene utilizzata in modo non valido.

  • La ricerca di una proprietà restituisce più di un'associazione e pertanto è ambigua.

  • È stato chiamato un metodo su un oggetto incompatibile. Ad esempio, un'eccezione TypeError viene generata se un metodo di classe RegExp viene associato a un oggetto generico e successivamente chiamato.

URIError

Un'eccezione URIError viene generata quando una delle funzioni di gestione URI globali viene utilizzata in modo incompatibile con la propria definizione.

Un errore URIError viene generato nelle seguenti circostanze:

Viene specificato un URI non valido per una funzione dell'API di Flash Player che prevede un URI valido, come Socket.connect().

VerifyError

Un'eccezione VerifyError viene generata quando si incontra un file SWF strutturato in modo errato o danneggiato.

Quando un file SWF carica un altro file SWF, il file SWF principale può rilevare un'eccezione VerifyError generata dal file SWF caricato.

Classi Error del pacchetto flash.error

Il pacchetto flash.error contiene classi Error considerate parte dell'API del runtime Flash. Diversamente da quanto avviene per le classi Error presentate finora, il pacchetto flash.error comunica eventi errore specifici ai runtime Flash (ad esempio Flash Player e Adobe AIR).

Nome classe

Descrizione

Note

EOFError

L'eccezione EOFError viene generata se si tenta di leggere oltre la fine dei dati disponibili.

Ad esempio, quando uno dei metodi di lettura dell'interfaccia IDataInput viene chiamato e i dati non sono sufficienti per soddisfare la richiesta di lettura.

IllegalOperationError

Un'eccezione IllegalOperationError viene generata se un metodo non viene implementato oppure se l'implementazione non copre l'uso corrente.

Di seguito sono riportati esempi di eccezioni per operazioni non valide:

  • Una classe base, ad esempio DisplayObjectContainer, fornisce più funzionalità rispetto a quelle supportate dallo stage. Ad esempio, se tentate di ottenere o impostare una maschera sullo stage (tramite stage.mask), il runtime Flash genera un'eccezione IllegalOperationError con il messaggio “La classe Stage non implementa questa proprietà o questo metodo”.

  • Una sottoclasse eredita un metodo di cui non ha bisogno e che non vuole supportare.

  • Alcuni metodi di accessibilità vengono chiamati quando Flash Player viene compilato senza il supporto dell'accessibilità.

  • Le funzioni di sola creazione vengono chiamate da una versione runtime di Flash Player.

  • Si tenta di impostare il nome di un oggetto inserito nella linea temporale.

IOError

Un'eccezione IOError viene generata quando si verifica un'eccezione di tipo I/O.

Si verifica questo errore, ad esempio, se si tenta di eseguire un'operazione di lettura/scrittura su un socket non connesso o che è stato disconnesso.

MemoryError

Un'eccezione MemoryError viene generata quando una richiesta di allocazione memoria fallisce.

Per impostazione predefinita, ActionScript Virtual Machine 2 non impone un limite sulla quantità di memoria che un programma ActionScript può allocare. Sui sistemi desktop, le richieste di allocazione memoria sono rare. Si verifica un errore quando il sistema non è in grado di allocare la memoria necessaria per un'operazione. Di conseguenza, su un sistema desktop, questa eccezione è rara a meno che la richiesta di memoria non sia estremamente grande; per esempio, una richiesta di 3 miliardi di byte è impossibile perché un programma Microsoft® Windows® a 32 bit è in grado di accedere a uno spazio indirizzi di 2 GB.

ScriptTimeoutError

Un'eccezione ScriptTimeoutError viene generata quando viene raggiunto l'intervallo di timeout dello script di 15 secondi. Rilevando l'eccezione ScriptTimeoutError è possibile gestire il timeout dello script in modo appropriato. In mancanza di un gestore di eccezioni, il gestore eccezioni non rilevate visualizza una finestra di dialogo con un messaggio di errore.

Per impedire che uno sviluppatore malintenzionato rilevi l'eccezione dando origine a un ciclo infinito, viene catturata solo la prima eccezione ScriptTimeoutError generata durante l'esecuzione di un particolare script. L'eccezione ScriptTimeoutError successiva non viene rilevata dal codice e passa immediatamente al gestore di eccezioni non rilevate.

StackOverflowError

Un'eccezione StackOverflowError viene generata quando lo stack disponibile per lo script è esaurito.

Un'eccezione StackOverflowError potrebbe indicare che si è verificata una ricorsività infinita.