Fehlerverarbeitung in ActionScript 3.0

Flash Player 9 und höher, Adobe AIR 1.0 und höher

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 .