15.10.2012 Views

Actionscript 3 Entwicklerhandbuch

Actionscript 3 Entwicklerhandbuch

Actionscript 3 Entwicklerhandbuch

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

ACTIONSCRIPT 3.0 ENTWICKLERHANDBUCH<br />

Verarbeiten von Fehlern<br />

Laufzeitfehler treten beim Ausführen einer Anwendung auf, nachdem diese kompiliert wurde. Es handelt sich dabei<br />

um Fehler, die auftreten, während eine SWF-Datei in einer Flash-Laufzeitumgebung (wie Adobe Flash Player oder<br />

Adobe AIR) wiedergegeben wird. In den meisten Fällen verarbeiten Sie Laufzeitfehler bei ihrem Auftreten, indem<br />

Sie sie an den Benutzer melden und entsprechende Schritte unternehmen, damit die Anwendung dennoch weiter<br />

ausgeführt werden kann. Wenn es sich um einen schwerwiegenden Fehler handelt, etwa wenn keine Verbindungen<br />

mit Websites hergestellt oder erforderliche Daten nicht geladen werden können, ist es mithilfe der<br />

Fehlerverarbeitung möglich, die Anwendung kontrolliert zu beenden.<br />

Synchrone Fehler sind Laufzeitfehler, die gleichzeitig mit dem Aufrufen einer Funktion auftreten, beispielsweise<br />

wenn Sie eine bestimmte Methode verwenden und das übergebene Argument ungültig ist, sodass die Flash-<br />

Laufzeitumgebung eine Ausnahme auslöst. Die meisten Fehler sind synchron, d. h. sie treten zum Zeitpunkt der<br />

Ausführung der Anweisung auf, und die Steuerung geht sofort auf die geeignetste catch-Anweisung über.<br />

Beispielsweise wird mit dem folgenden Codeauszug ein Laufzeitfehler ausgelöst, da die browse()-Methode nicht<br />

aufgerufen wird, bevor das Programm versucht, eine Datei hochzuladen:<br />

var fileRef:FileReference = new FileReference();<br />

try<br />

{<br />

fileRef.upload(new URLRequest("http://www.yourdomain.com/fileupload.cfm"));<br />

}<br />

catch (error:IllegalOperationError)<br />

{<br />

trace(error);<br />

// Error #2037: Functions called in incorrect sequence, or earlier<br />

// call was unsuccessful.<br />

}<br />

In diesem Fall wird ein synchroner Laufzeitfehler ausgelöst, da in Flash Player festgestellt wurde, dass die<br />

browse()-Methode nicht aufgerufen wurde, bevor der Dateiuploadversuch erfolgt ist.<br />

Detaillierte Informationen zur synchronen Fehlerverarbeitung finden Sie unter „Verarbeiten synchroner Fehler in<br />

einer Anwendung“ auf Seite 62.<br />

Asynchrone Fehler sind Laufzeitfehler, die zu verschiedenen Zeitpunkten während der Laufzeit auftreten. Sie lösen<br />

Ereignisse aus, die von Ereignis-Listenern abgefangen werden. Bei einem asynchronen Vorgang initiiert eine<br />

Funktion einen Vorgang, wartet jedoch nicht auf dessen Abschluss. Sie können Fehlerereignis-Listener erstellen,<br />

die überwachen, ob die Anwendung oder der Benutzer einen bestimmten Vorgang ausführt. Wenn dieser Vorgang<br />

fehlschlägt, fangen Sie den Fehler mit dem Ereignis-Listener ab und reagieren auf das Fehlerereignis. Der Ereignis-<br />

Listener ruft dann eine Ereignisprozedurfunktion auf, um auf geeignete Weise auf den Fehler zu reagieren. Mit der<br />

Ereignisprozedur kann beispielsweise ein Dialogfeld angezeigt werden, in dem der Benutzer zum Beheben des<br />

Fehlers aufgefordert wird.<br />

Rufen Sie sich das zuvor vorgestellte Beispiel für einen synchronen Fehler beim Dateiupload in Erinnerung. Wenn<br />

Sie vor dem Start des Dateiuploads die browse()-Methode aufrufen, löst Flash Player verschiedene Ereignisse aus.<br />

Beispielsweise wird beim Start des Uploads das open-Ereignis ausgelöst. Nach dem erfolgreichen Beenden des<br />

Dateiuploads wird das complete-Ereignis ausgelöst. Da die Ereignisverarbeitung asynchron ist (d. h. nicht zu<br />

bestimmten, bekannten Zeitpunkten erfolgt), verwenden Sie zum Warten auf diese Ereignisse die<br />

addEventListener()-Methode, wie im folgenden Code dargestellt:<br />

Letzte Aktualisierung 27.6.2012<br />

57

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!