ActionScript stellt eine Reihe vordefinierter Error-Klassen bereit. Sie können jedoch auch dieselben Error-Klassen in Ihrem eigenen Code verwenden. Es gibt zwei Haupttypen von Fehlerklassen in ActionScript 3.0: Error-Kernklassen und Error-Klassen des flash.error-Pakets. Das flash.error-Paket enthält zusätzliche Klassen, die Entwicklung und Debugging von ActionScript 3.0-Anwendungen erleichtern sollen.
Error-Kernklassen
Zu den Error-Kernklassen gehören die Klassen Error, ArgumentError, EvalError, RangeError, ReferenceError, SecurityError, SyntaxError, TypeError, URIError und VerifyError. Jede dieser Klassen befindet sich im Namespace der obersten Ebene.
Klassenname
|
Beschreibung
|
Hinweise
|
Error
|
Mit der Error-Klasse können Ausnahmen ausgelöst werden. Sie ist die Basisklasse für die anderen in ECMAScript definierten Ausnahmeklassen: EvalError, RangeError, ReferenceError, SyntaxError, TypeError und URIError.
|
Die Error-Klasse dient als Basisklasse für alle Laufzeitfehler. Sie ist auch die empfohlene Basisklasse für alle benutzerdefinierten Fehlerklassen.
|
ArgumentError
|
Die ArgumentError-Klasse repräsentiert einen Fehler, der auftritt, wenn die in einem Funktionsaufruf übergebenen Parameterwerte nicht den für diese Funktion definierten Parametern entsprechen.
|
Beispiele für solche Fehler:
-
Einer Methode werden zu wenige oder zu viele Argumente übergeben.
-
Es wurde erwartet, dass ein Argument Mitglied einer Aufzählung ist. Dies war jedoch nicht der Fall.
|
EvalError
|
EvalError-Ausnahmen werden ausgelöst, wenn Parameter an den Konstruktor der Function-Klasse übergeben werden oder wenn die
eval()
-Funktion im Benutzercode aufgerufen wird.
|
In ActionScript 3.0 wird die
eval()
-Funktion nicht mehr unterstützt. Versuche, diese Funktion zu verwenden, führen zu einem Fehler.
In älteren Versionen von Flash Player wurde die
eval()
-Funktion eingesetzt, um auf Variablen, Eigenschaften, Objekte oder Movieclips über deren Namen zuzugreifen.
|
RangeError
|
Eine RangeError-Ausnahme wird ausgelöst, wenn ein numerischer Wert außerhalb eines zulässigen Bereichs liegt.
|
Beispielsweise wird eine RangeError-Ausnahme durch die Timer-Klasse ausgelöst, wenn ein Verzögerungswert negativ oder keine endliche Zahl ist. RangeError-Ausnahmen werden auch ausgelöst, wenn Sie versuchen, Anzeigeobjekte in einer ungültigen Tiefe hinzuzufügen.
|
ReferenceError
|
Eine ReferenceError-Ausnahme wird ausgelöst, wenn bei einem versiegelten (nicht dynamischen) Objekt versucht wird, auf eine nicht definierte Eigenschaft zu verweisen. In den ActionScript-Compilerversionen vor ActionScript 3.0 wurde kein Fehler bei dem Versuch ausgelöst, auf eine Eigenschaft mit dem Wert
undefined
zuzugreifen. In ActionScript 3.0 wird bei dieser Bedingung dagegen eine ReferenceError-Ausnahme ausgelöst.
|
Ausnahmen für nicht definierte Variable sind Hinweise auf mögliche Programmfehler und unterstützen Sie dabei, die Qualität von Anwendungen zu verbessern. Wenn Sie es jedoch bisher nicht gewohnt waren, Variablen zu initialisieren, müssen Sie aufgrund dieser neuen ActionScript-Funktionsweise Ihre Programmiergewohnheiten ändern.
|
SecurityError
|
Eine SecurityError-Ausnahme wird ausgelöst, wenn eine Sicherheitsverletzung auftritt und der Zugriff verweigert wird.
|
Beispiele für solche Fehler:
-
Über die Begrenzung einer Sicherheits-Sandbox hinweg findet ein nicht autorisierter Zugriff auf eine Eigenschaft oder ein nicht autorisierter Aufruf einer Methode statt.
-
Es wurde versucht, auf eine URL-Adresse zuzugreifen, die von der Sicherheits-Sandbox nicht zugelassen ist.
-
Es wurde versucht, eine Socket-Verbindung mit einem Port herzustellen, aber die erforderliche Socket-Richtliniendatei war nicht vorhanden.
-
Es wurde versucht, auf die Kamera oder das Mikrofon des Benutzers zuzugreifen, aber der Benutzer hat den Zugriff auf das Gerät verweigert.
|
SyntaxError
|
Eine SyntaxError-Ausnahme wird ausgelöst, wenn ein Parsingfehler im ActionScript-Code auftritt.
|
SyntaxError-Ausnahmen werden in den folgenden Fällen ausgelöst:
-
ActionScript löst SyntaxError-Ausnahmen aus, wenn die RegExp-Klasse einen ungültigen regulären Ausdruck analysiert.
-
ActionScript löst SyntaxError-Ausnahmen aus, wenn die XMLDocument-Klasse ungültiges XML analysiert.
|
TypeError
|
Eine TypeError-Ausnahme wird ausgelöst, wenn sich der tatsächliche Typ eines Operanden vom erwarteten Typ unterscheidet.
|
TypeError-Ausnahmen werden in den folgenden Fällen ausgelöst:
-
Der Typ des tatsächlichen Parameters einer Funktion oder Methode konnte nicht automatisch in den formalen Parametertyp umgewandelt werden.
-
Einer Variablen wird ein Wert zugewiesen, der jedoch nicht automatisch in den Variablentyp umgewandelt werden kann.
-
Die rechte Seite des
is
- oder
instanceof
-Operators besitzt einen ungültigen Typ.
-
Das Schlüsselwort
super
wurde in unzulässiger Weise eingesetzt.
-
Das Nachschlagen einer Eigenschaft führt zu mehreren Bindungen und ist daher mehrdeutig.
-
Eine Methode wird für ein inkompatibles Objekt aufgerufen. So wird beispielsweise eine TypeError-Ausnahme ausgelöst, wenn eine Methode der RegExp-Klasse auf ein generisches Objekt übertragen und dann aufgerufen wird.
|
URIError
|
Eine URIError-Ausnahme wird ausgelöst, wenn eine der globalen Funktionen für die URI-Verarbeitung auf eine Weise eingesetzt wird, die mit ihrer Definition inkompatibel ist.
|
URIError-Ausnahmen werden in den folgenden Fällen ausgelöst:
Für eine Funktion der Flash Player-API, z. B.
Socket.connect()
, die eine gültige URI erwartet, wurde eine ungültige URI angegeben.
|
VerifyError
|
Eine VerifyError-Ausnahme wird ausgelöst, wenn eine ungültige oder beschädigte SWF-Datei gefunden wird.
|
Wenn eine SWF-Datei eine andere SWF-Datei lädt, kann die übergeordnete SWF-Datei eine von der geladenen SWF-Datei hervorgerufene VerifyError-Ausnahme abfangen.
|
Fehlerklassen im flash.error-Paket
Das flash.error-Paket enthält Error-Klassen, die als Bestandteil der Flash-Laufzeitumgebungs-API angesehen werden. Im Gegensatz zu den beschriebenen Error-Klassen dienen die Klassen im flash.error-Paket zur Kennzeichnung von Fehlerereignissen, die für Flash-Laufzeitumgebungen spezifisch sind (wie Flash Player und Adobe AIR).
Klassenname
|
Beschreibung
|
Hinweise
|
EOFError
|
Eine EOFError-Ausnahme wird ausgelöst, wenn nach dem Ende der verfügbaren Daten ein Lesevorgang durchgeführt wird.
|
Beispielsweise wird eine EOFError-Ausnahme ausgelöst, wenn eine der Lesemethoden der IDataInput-Schnittstelle aufgerufen wird und für diese Anforderung nicht genug Daten vorhanden sind.
|
IllegalOperationError
|
Eine IllegalOperationError-Ausnahme wird ausgelöst, wenn eine Methode nicht implementiert ist oder wenn die Implementierung nicht die verwendeten Aufrufparameter unterstützt.
|
Beispiele für IllegalOperationError-Ausnahmen:
-
Eine Basisklasse wie DisplayObjectContainer bietet mehr Funktionalität als von der Bühne unterstützt wird. Wenn Sie beispielsweise versuchen, eine Maske auf der Bühne abzurufen oder festzulegen (mithilfe von
stage.mask
), löst die Flash-Laufzeitumgebung eine IllegalOperationError-Ausnahme mit der folgenden Meldung aus: „Die Stage-Klasse hat diese Eigenschaft oder Methode nicht implementiert“.
-
Eine Unterklasse erbt eine Methode, die nicht erforderlich ist und nicht unterstützt wird.
-
Es werden bestimmte Eingabehilfen-Methoden aufgerufen, obwohl Flash Player ohne Eingabehilfen kompiliert wurde.
-
In einer Laufzeitversion von Flash Player werden Funktionen aufgerufen, die nur in der Authoring-Umgebung verfügbar sind.
-
Sie versuchen, den Namen eines Objekts festzulegen, das sich auf der Zeitleiste befindet.
|
IOError
|
Eine IOError-Ausnahme wird ausgelöst, wenn ein Ein- oder Ausgabefehler auftritt.
|
Beispielsweise wird diese Ausnahme ausgelöst, wenn ein Lese-/Schreibvorgang für eine nicht oder nicht mehr verfügbare Socketverbindung durchgeführt wird.
|
MemoryError
|
Eine MemoryError-Ausnahme wird ausgelöst, wenn eine Speicherzuweisungsanforderung fehlschlägt.
|
In ActionScript Virtual Machine 2 ist standardmäßig keine Obergrenze für den Speicher vorgegeben, den ein ActionScript-Programm zuweist. Auf Desktopsystemen treten Speicherzuweisungsfehler nur selten auf. Diese Fehler werden ausgelöst, wenn das System den für einen Vorgang erforderlichen Speicher nicht zuweisen kann. Deshalb tritt diese Ausnahme auf Desktopsystemen nur selten auf, solange es sich nicht um sehr große Zuweisungsanforderungen handelt. Beispielsweise ist das Anfordern von 3.000.000.000 Byte nicht möglich, da 32-Bit-Microsoft® Windows®-Programme nur über einen Adressraum von 2 GB verfügen.
|
ScriptTimeoutError
|
Eine ScriptTimeoutError-Ausnahme wird ausgelöst, wenn das Skriptzeitlimit von 15 Sekunden erreicht ist. Indem Sie ScriptTimeoutError-Ausnahmen abfangen, können Sie besser auf die Überschreitung des Zeitlimits durch das Skript reagieren. Wenn keine Ausnahmeprozedur vorhanden ist, wird von der Ausnahmeprozedur für nicht abgefangene Ausnahmen ein Dialogfeld mit einer Fehlermeldung angezeigt.
|
Damit niemand diese Ausnahme in böswilliger Absicht abfängt und eine Endlosschleife hervorruft, kann nur die erste beim Ausführen eines bestimmten Skripts ausgelöste ScriptTimeoutError-Ausnahme abgefangen werden. Eine weitere ScriptTimeoutError-Ausnahme kann nicht mehr im Code abgefangen werden und wird sofort an die Ausnahmeprozedur für nicht abgefangene Ausnahmen weitergeleitet.
|
StackOverflowError
|
Eine StackOverflowError-Ausnahme wird ausgelöst, wenn der für das Skript verfügbare Stapelspeicher ausgeschöpft ist.
|
Eine StackOverflowError-Ausnahme weist möglicherweise darauf hin, dass eine unendliche Rekursion aufgetreten ist.
|
|
|
|