Da viele Anwendungen ausgeführt werden können, ohne dass die Programmlogik zum Verarbeiten von Fehlern erstellt wurde, neigen Entwickler dazu, die Programmierung der Fehlerverarbeitung für ihre Anwendungen hinauszuzögern. Ohne Fehlerverarbeitung kann es jedoch leicht vorkommen, dass Benutzer durch Anwendungen eingeschränkt oder frustriert werden, wenn Vorgänge nicht wie erwartet durchgeführt werden können. ActionScript 2.0 verfügt über eine Error-Klasse, mit der Sie entsprechende Programmlogik als benutzerdefinierte Funktionen erstellen können, die Ausnahmen mit einer speziellen Meldung auslösen. Da die Fehlerverarbeitung zum Erstellen benutzerfreundlicher Anwendungen unabdingbar ist, enthält ActionScript 3.0 eine erweiterte Architektur zum Abfangen von Fehlern.
Hinweis:
Im
ActionScript 3.0-Referenzhandbuch für die Adobe Flash-Plattform
werden zwar die Ausnahmen dokumentiert, die von zahlreichen Methoden ausgelöst werden, ein Anspruch auf Vollständigkeit wird jedoch nicht erhoben. Möglicherweise löst eine Methode eine Ausnahme wegen Syntaxfehlern oder anderen Problemen aus, die nicht explizit in der Methodenbeschreibung genannt sind, selbst wenn andere Ausnahmen für diese Methode aufgeführt sind.
Elemente der Fehlerverarbeitung in ActionScript 3.0
ActionScript 3.0 enthält viele Tools zur Fehlerverarbeitung. Dazu gehören u.a.:
-
Error-Klassen. ActionScript 3.0 umfasst eine breite Palette an Error-Klassen, um den Umfang der Situationen auszuweiten, in denen Fehlerobjekte auftreten können. Jede der Error-Klassen erleichtert es, in Anwendungen bestimmte Fehlerzustände zu verarbeiten und auf sie zu reagieren. Diese können sich auf Systemfehler (z. B. MemoryError-Fehler), Programmierfehler (z. B. ArgumentError-Fehler), Netzwerk- und Kommunikationsfehler (z. B. URIError-Fehler) oder andere Fehlersituationen beziehen. Weitere Informationen zu den einzelnen Klassen finden Sie unter
Vergleich der Error-Klassen
.
-
Weniger stillschweigendes Fehlschlagen. In früheren Versionen von Flash Player wurden Fehler nur erzeugt und gemeldet, wenn explizit die
throw
-Anweisung verwendet wurde. Für Flash Player 9 und höhere Flash-Laufzeitumgebungen lösen native ActionScript-Methoden und -Eigenschaften Laufzeitfehler aus. Diese Fehler ermöglichen es Ihnen, die aufgetretenen Ausnahmen effizient zu verarbeiten und individuell auf einzelne Ausnahmen zu reagieren.
-
Aussagekräftige Fehlermeldungen während des Debuggens. Beim Einsatz der Debugger-Version einer Flash-Laufzeitumgebung werden für problematischen Code oder Fehlersituationen umfangreiche Fehlermeldungen erzeugt, mit denen Sie schnell den Grund für das Fehlschlagen eines bestimmten Codeblocks ermitteln können. Dank dieser Meldungen können Fehler effizienter behoben werden. Weitere Informationen finden Sie unter
Arbeiten mit den Debugger-Versionen der Flash-Laufzeitumgebungen
.
-
Genau zuordenbare Fehler ermöglichen eindeutige Fehlermeldungen, die Benutzern angezeigt werden. In früheren Versionen von Flash Player gab die
FileReference.upload()
-Methode den booleschen Wert
false
zurück, wenn der Aufruf von
upload()
nicht erfolgreich war. Dieser eine Wert diente zum Kennzeichnen von fünf verschiedenen möglichen Fehlern. Wenn beim Aufrufen der
upload()
-Methode in ActionScript 3.0 ein Fehler auftritt, bieten Ihnen vier spezifische Fehler die Möglichkeit, genauere Fehlermeldungen für Endbenutzer anzuzeigen.
-
Gezieltere Fehlerverarbeitung. Für viele häufig auftretende Fehlersituationen werden eindeutige Fehler ausgelöst. Beispielsweise hat in ActionScript 2.0 vor dem Füllen eines FileReference-Objekts mit Daten die
name
-Eigenschaft den Wert
null
. Deshalb müssen Sie vor dem Verwenden oder Anzeigen der
name
-Eigenschaft sicherstellen, dass der Wert gesetzt und nicht
null
ist. In ActionScript 3.0 wird bei dem Versuch, vor dem Füllen des Objekts mit Daten auf die
name
-Eigenschaft zuzugreifen, in Flash Player oder AIR ein IllegalOperationError-Fehler ausgelöst, der Sie darüber informiert, dass der Wert noch nicht gesetzt wurde. Sie können
try..catch..finally
-Blöcke verwenden, um den Fehler zu verarbeiten. Weitere Informationen finden Sie unter
Verwenden von „try..catch..finally“-Anweisungen
.
-
Keine spürbaren Leistungseinbußen. Verwenden von
try..catch..finally
-Blöcken zur Fehlerverarbeitung nimmt im Vergleich zu früheren ActionScript-Versionen nur geringe oder gar keine zusätzlichen Ressourcen in Anspruch.
-
Eine ErrorEvent-Klasse, mit deren Hilfe Sie Listener für bestimmte asynchrone Fehlerereignisse erstellen können. Weitere Informationen finden Sie unter
Reagieren auf Fehlerereignisse und Status
.
Fehlerverarbeitungsstrategien
Solange in einer Anwendung keine Probleme auftreten, kann sie meist erfolgreich ausgeführt werden, selbst wenn Sie keine Programmlogik zur Fehlerverarbeitung in den Code integrieren. Wenn Sie Fehler jedoch nicht aktiv verarbeiten und in der Anwendung ein Problem auftritt, bleibt es den Benutzern verborgen, warum die Anwendung in diesem Fall plötzlich fehlschlägt.
Es gibt unterschiedliche Möglichkeiten für die Fehlerverarbeitung in Anwendungen. In der nachstehenden Liste sind die drei wichtigsten Optionen für die Fehlerverarbeitung zusammengefasst:
-
Verwenden von
try..catch..finally
-Anweisungen. Mit diesen Anweisungen werden synchrone Fehler zum Zeitpunkt ihres Auftretens abgefangen. Sie können diese Anweisungen hierarchisch verschachteln, um Ausnahmen auf unterschiedlichen Ebenen der Codeausführung abzufangen. Weitere Informationen finden Sie unter
Verwenden von „try..catch..finally“-Anweisungen
.
-
Erstellen benutzerdefinierter Fehlerobjekte. Sie können die Error-Klasse verwenden, um benutzerdefinierte Fehlerobjekte zu definieren und mit ihnen bestimmte Vorgänge in der Anwendung zu verfolgen, die von den integrierten Fehlertypen nicht abgedeckt werden. Dann können Sie
try..catch..finally
-Anweisungen für Ihre benutzerdefinierten Fehlerobjekte verwenden. Weitere Informationen finden Sie unter
Erstellen benutzerdefinierter Fehlerklassen
.
-
Programmieren von Ereignis-Listenern und Ereignisprozeduren zur Reaktion auf Fehlerereignisse. Durch diese Strategie können Sie globale Fehlerprozeduren erstellen, mit deren Hilfe Sie ähnliche Ereignisse verarbeiten können, ohne in
try..catch..finally
-Blöcken unnötig viel Code wiederholen zu müssen. Bei diesem Ansatz ist außerdem die Wahrscheinlichkeit größer, asynchrone Fehler abfangen zu können. Weitere Informationen finden Sie unter
Reagieren auf Fehlerereignisse und Status
.
|
|
|