Fehlertypen

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

Beim Entwickeln und Ausführen von Anwendungen treffen Sie auf unterschiedliche Fehlertypen und Fehlerbezeichnungen. In der folgenden Liste werden die wichtigsten Fehlertypen und Begriffe vorgestellt.

  • Kompilierzeitfehler werden vom ActionScript-Compiler während der Codekompilierung ausgelöst. Diese Fehler treten auf, wenn Syntaxprobleme im Programmcode das Erstellen der Anwendung verhindern.

  • Laufzeitfehler treten beim Ausführen einer Anwendung auf, nachdem diese kompiliert wurde. Es handelt sich dabei um Fehler, die auftreten, während eine SWF-Datei in einer Flash-Laufzeitumgebung (wie Adobe Flash Player oder Adobe AIR) wiedergegeben wird. In den meisten Fällen verarbeiten Sie Laufzeitfehler bei ihrem Auftreten, indem Sie sie an den Benutzer melden und entsprechende Schritte unternehmen, damit die Anwendung dennoch weiter ausgeführt werden kann. Wenn es sich um einen schwerwiegenden Fehler handelt, etwa wenn keine Verbindungen mit Websites hergestellt oder erforderliche Daten nicht geladen werden können, ist es mithilfe der Fehlerverarbeitung möglich, die Anwendung kontrolliert zu beenden.

  • Synchrone Fehler sind Laufzeitfehler, die gleichzeitig mit dem Aufrufen einer Funktion auftreten, beispielsweise wenn Sie eine bestimmte Methode verwenden und das übergebene Argument ungültig ist, sodass die Flash-Laufzeitumgebung eine Ausnahme auslöst. Die meisten Fehler sind synchron, d. h. sie treten zum Zeitpunkt der Ausführung der Anweisung auf, und die Steuerung geht sofort auf die geeignetste catch -Anweisung über.

    Beispielsweise wird mit dem folgenden Codeauszug ein Laufzeitfehler ausgelöst, da die browse() -Methode nicht aufgerufen wird, bevor das Programm versucht, eine Datei hochzuladen:

    var fileRef:FileReference = new FileReference(); 
    try 
    { 
        fileRef.upload(new URLRequest("http://www.yourdomain.com/fileupload.cfm")); 
    } 
    catch (error:IllegalOperationError) 
    { 
        trace(error); 
        // Error #2037: Functions called in incorrect sequence, or earlier 
        // call was unsuccessful. 
    }

    In diesem Fall wird ein synchroner Laufzeitfehler ausgelöst, da in Flash Player festgestellt wurde, dass die browse() -Methode nicht aufgerufen wurde, bevor der Dateiuploadversuch erfolgt ist.

    Detaillierte Informationen zur synchronen Fehlerverarbeitung finden Sie unter Verarbeiten synchroner Fehler in einer Anwendung .

  • Asynchrone Fehler sind Laufzeitfehler, die außerhalb des normalen Programmflusses auftreten. Sie generieren Ereignisse, die von Ereignis-Listenern abgefangen werden. Bei einem asynchronen Vorgang initiiert eine Funktion einen Vorgang, wartet jedoch nicht auf dessen Abschluss. Sie können Fehlerereignis-Listener erstellen, die überwachen, ob die Anwendung oder der Benutzer einen bestimmten Vorgang ausführt. Wenn dieser Vorgang fehlschlägt, fangen Sie den Fehler mit dem Ereignis-Listener ab und reagieren auf das Fehlerereignis. Der Ereignis-Listener ruft dann eine Ereignisprozedurfunktion auf, um auf geeignete Weise auf den Fehler zu reagieren. Mit der Ereignisprozedur kann beispielsweise ein Dialogfeld angezeigt werden, in dem der Benutzer zum Beheben des Fehlers aufgefordert wird.

    Rufen Sie sich das zuvor vorgestellte Beispiel für einen synchronen Fehler beim Dateiupload in Erinnerung. Wenn Sie vor dem Start des Dateiuploads die browse() -Methode aufrufen, löst Flash Player verschiedene Ereignisse aus. Beispielsweise wird beim Start des Uploads das open -Ereignis ausgelöst. Nach dem erfolgreichen Beenden des Dateiuploads wird das complete -Ereignis ausgelöst. Da die Ereignisverarbeitung asynchron ist (d. h. nicht zu bestimmten, bekannten Zeitpunkten erfolgt), verwenden Sie zum Warten auf diese Ereignisse die addEventListener() -Methode, wie im folgenden Code dargestellt:

    var fileRef:FileReference = new FileReference(); 
    fileRef.addEventListener(Event.SELECT, selectHandler); 
    fileRef.addEventListener(Event.OPEN, openHandler); 
    fileRef.addEventListener(Event.COMPLETE, completeHandler); 
    fileRef.browse(); 
     
    function selectHandler(event:Event):void 
    { 
        trace("...select..."); 
        var request:URLRequest = new URLRequest("http://www.yourdomain.com/fileupload.cfm"); 
        request.method = URLRequestMethod.POST; 
        event.target.upload(request); 
    } 
    function openHandler(event:Event):void 
    { 
        trace("...open..."); 
    } 
    function completeHandler(event:Event):void 
    { 
        trace("...complete..."); 
    }

    Detaillierte Informationen zur asynchronen Fehlerverarbeitung finden Sie unter Reagieren auf Fehlerereignisse und Status .

  • Nicht abgefangene Ausnahmen sind Fehler, die ausgelöst werden und für die keine entsprechende Programmlogik zur angemessenen Reaktion (beispielsweise eine catch -Anweisung) vorliegt. Wenn in einer Anwendung ein Fehler ausgelöst wird und auf der aktuellen oder einer höheren Ebene keine geeignete catch -Anweisung oder keine Ereignisprozedur zur Fehlerverarbeitung gefunden wird, gilt dieser Fehler als nicht abgefangene Ausnahme.

    Wenn ein nicht abgefangener Fehler auftritt, löst die Laufzeit ein uncaughtError -Ereignis aus. Dieses Ereignis wird auch „globale Fehlerprozedur“ genannt. Dieses Ereignis wird vom UncaughtErrorEvents-Objekt der SWF ausgelöst, das über die LoaderInfo.uncaughtErrorEvents -Eigenschaft zur Verfügung steht. Wenn keine Listener für das uncaughtError -Ereignis registriert sind, ignoriert die Laufzeit nicht abgefangene Fehler. Die Laufzeit versucht, die Ausführung fortzusetzen, sofern die SWF durch den Fehler nicht gestoppt wird.

    Zusätzlich zum Auslösen des uncaughtError -Ereignisses reagieren Debugger-Versionen der Flash-Laufzeit auf nicht abgefangene Fehler, indem das aktuelle Skript beendet wird. Dann wird der nicht abgefangene Fehler in der Ausgabe einer trace -Anweisung angezeigt oder eine Fehlermeldung wird in eine Protokolldatei geschrieben. Wenn das Ausnahmeobjekt eine Instanz der Error-Klasse oder einer ihrer Unterklassen ist, werden in der Ausgabe auch Stacktrace-Informationen angezeigt. Weitere Informationen zur Verwendung der Debugger-Version von Flash-Laufzeitumgebungen finden Sie unter Arbeiten mit den Debugger-Versionen der Flash-Laufzeitumgebungen .

    Hinweis: Wenn bei der Verarbeitung eines uncaughtError-Ereignisses ein Fehlerereignis von einer uncaughtError-Prozedur ausgelöst wird, wird die Ereignisprozedur mehrmals aufgerufen. Dies führt zu einer unendlichen Ausnahmeschleife. Ein solches Szenario sollte vermieden werden.