ActionScript® 3.0 Referenzhandbuch für die Adobe® Flash®-Plattform
Home  |  Liste der Pakete und Klassen ausblenden |  Pakete  |  Klassen  |  Neue Funktionen  |  Stichwortverzeichnis  |  Anhänge  |  Warum auf Englisch?
Filter: Daten werden vom Server abgerufen...
Daten werden vom Server abgerufen...
flash.events 

UncaughtErrorEvent  - AS3

Paketflash.events
Klassepublic class UncaughtErrorEvent
VererbungUncaughtErrorEvent Inheritance ErrorEvent Inheritance TextEvent Inheritance Event Inheritance Object

Sprachversion: ActionScript 3.0
Laufzeitversionen: Flash Player 10.1, AIR 2

Ein UncaughtErrorEvent-Objekt wird von einer Instanz der UncaughtErrorEvents-Klasse abgesetzt, wenn ein nicht erfasster Fehler auftritt. Fehler werden nicht erfasst, wenn sie außerhalb von try..catch-Blöcken ausgegeben werden, oder wenn ein ErrorEvent-Objekt ausgelöst wird, aber keine registrierten Listener vorhanden sind. Die Funktionalität für nicht erfasste Fehlerereignisse wird häufig als „globale Fehlerprozedur“ bezeichnet.

Das UncaughtErrorEvents-Objekt, welches das Ereignis absetzt, ist entweder mit einem LoaderInfo-Objekt oder mit einem Loader-Objekt verknüpft. Mit den folgenden Eigenschaften können Sie auf eine UncaughtErrorEvents-Instanz zugreifen:

  • LoaderInfo.uncaughtErrorEvents: zum Erkennen nicht erfasster Fehler im Code, der in derselben SWF-Datei definiert ist.
  • Loader.uncaughtErrorEvents: zum Erkennen nicht erfasster Fehler im Code, der in der SWF-Datei definiert ist, die von einem Loader-Objekt geladen wird.

Wenn ein uncaughtError-Ereignis auftritt, wird die Ausführung in dem Aufruf-Stack, der den Fehler verursacht hat, nicht fortgesetzt, selbst wenn das Ereignis verarbeitet wird. Falls es sich bei dem Fehler um einen synchronen Fehler handelt, wird Code, der in der Funktion verbleibt, in der der Fehler aufgetreten ist, nicht ausgeführt. Infolgedessen ist es wahrscheinlich, dass sich Ihre Anwendung in einem instabilen Zustand befindet, wenn ein nicht erfasster Fehler auftritt. Da ein nicht erfasster Fehler viele Ursachen haben kann, ist es unmöglich vorherzusagen, welche Funktionen verfügbar sind. Ihre Anwendung kann zum Beispiel in der Lage sein, Netzwerkoperationen oder Dateioperationen auszuführen. Diese Operationen stehen jedoch nicht unbedingt zur Verfügung.

Wenn eine SWF-Datei eine andere lädt, steigen uncaughtError-Ereignisse durch die LoaderInfo-Hierarchie nach unten und wieder nach oben. Angenommen, A.sfw lädt B.swf mithilfe einer Loader-Instanz. Wenn ein nicht erfasster Fehler in B.swf auftritt, wird ein uncaughtError-Ereignis in der folgenden Reihenfolge an LoaderInfo- und Loader-Objekte abgesetzt:

  1. (Erfassungsphase) LoaderInfo von A.swf
  2. (Erfassungsphase) Loader in A.swf
  3. (Zielphase) LoaderInfo von B.swf
  4. (Bubbling-Phase) Loader in A.swf
  5. (Bubbling-Phase) LoaderInfo von A.swf

Die uncaughtErrorEvents-Eigenschaft eines Loader-Objekts setzt nie ein uncaughtErrorEvent-Ereignis in der Zielphase ab. Sie setzt das Ereignis nur in den Erfassungs- und Bubblingphasen ab.

Wie bei anderen Ereignis-Bubblings beendet der Aufruf von stopPropagation() oder stopImmediatePropagation() das Absetzen des Ereignisses an andere Listener, allerdings mit einem wichtigen Unterschied. Das UncaughtErrorEvents-Objekt eines Loader-Objekts wird zum Zweck der Ereignispropagierung als ein Paar mit dem LoaderInfo.uncaughtErrorEvents-Objekt der geladenen SWF-Datei behandelt. Wenn ein mit einem dieser Objekte registrierter Listener die stopPropagation()-Methode aufruft, werden Ereignisse immer noch an andere Listener abgesetzt, die mit diesem UncaughtErrorEvents-Objekt registriert sind, und an Listener, die mit seinem UncaughtErrorEvents-Partnerobjekt registriert sind, bevor die Ereignispropagierung endet. Die stopImmediatePropagation()-Methode verhindert weiterhin, dass Ereignisse an alle zusätzlichen Listener abgesetzt werden.

Wenn Inhalt in einer Debugger-Version der Laufzeitumgebung ausgeführt wird, zum Beispiel in der Debugger-Version von Flash Player oder im AIR Debug Launcher (ADL), wird ein Dialogfeld angezeigt, wenn ein nicht erfasster Fehler auftritt. Für diese Laufzeitumgebungsversionen wird das Fehlerdialogfeld auch dann angezeigt, wenn ein Listener für das uncaughtError-Ereignis registriert ist. Um zu verhindern, dass das Dialogfeld in einer solchen Situation angezeigt wird, rufen Sie die preventDefault()-Methode des UncaughtErrorEvent-Objekts auf.

Wenn es sich bei dem von einem Loader-Objekt geladenen Inhalt um eine AVM1 (ActionScript 2)-SWF-Datei handelt, führen nicht erfasste Fehler in der AVM1-SWF-Datei nicht zu einem uncaughtError-Ereignis. Außerdem führen JavaScript-Fehler in HTML-Inhalten, die in ein HTMLLoader-Objekt (einschließlich eines Flex-HTML-Steuerungselements) geladen werden, nicht zu einem uncaughtError-Ereignis.

Beispiele anzeigen

Verwandte API-Elemente



Öffentliche Eigenschaften
 EigenschaftDefiniert von
 Inheritedbubbles : Boolean
[schreibgeschützt] Gibt an, ob es sich bei dem Ereignis um ein Bubbling-Ereignis handelt.
Event
 Inheritedcancelable : Boolean
[schreibgeschützt] Gibt an, ob das mit dem Ereignis verknüpfte Verhalten verhindert werden kann.
Event
 Inheritedconstructor : Object
Ein Verweis auf das Klassenobjekt oder die Konstruktorfunktion für eine angegebene Objektinstanz.
Object
 InheritedcurrentTarget : Object
[schreibgeschützt] Das Objekt, welches das Ereignisobjekt aktiv mit einem Ereignis-Listener verarbeitet.
Event
  error : *
[schreibgeschützt] Das Fehlerobjekt, das mit dem nicht erfassten Fehler verknüpft ist.
UncaughtErrorEvent
 InheritederrorID : int
[schreibgeschützt] Enthält die Verweisnummer, die dem spezifischen Fehler zugeordnet ist.
ErrorEvent
 InheritedeventPhase : uint
[schreibgeschützt] Die aktuelle Phase im Ereignisablauf.
Event
 Inheritedtarget : Object
[schreibgeschützt] Das Ereignis-Ziel.
Event
 Inheritedtext : String
Bei einem textInput-Ereignis das bzw. die vom Benutzer eingegebene(n) Zeichen.
TextEvent
 Inheritedtype : String
[schreibgeschützt] Der Ereignistyp.
Event
Öffentliche Methoden
 MethodeDefiniert von
  
UncaughtErrorEvent(type:String, bubbles:Boolean = true, cancelable:Boolean = true, error_in:* = null)
Erstellt ein UncaughtErrorEvent-Objekt, das Informationen über ein uncaughtError-Ereignisse enthält.
UncaughtErrorEvent
  
[override] Erstellt eine Kopie des UncaughtErrorEvent-Objekts und stellt den Wert jeder Eigenschaft so ein, dass er dem Wert des Originals entspricht.
UncaughtErrorEvent
 Inherited
formatToString(className:String, ... arguments):String
Eine Dienstprogrammfunktion zur Implementierung der toString()-Methode in benutzerdefinierten ActionScript 3.0 Event-Klassen.
Event
 Inherited
Gibt an, ob für ein Objekt eine bestimmte Eigenschaft definiert wurde.
Object
 Inherited
Überprüft, ob die preventDefault()-Methode bei dem Ereignis aufgerufen wurde.
Event
 Inherited
Gibt an, ob eine Instanz der Object-Klasse in der Prototypkette des Objekts vorhanden ist, das als Parameter angegeben wurde.
Object
 Inherited
Bricht das Standardverhalten eines Ereignisses ab, wenn dieses Verhalten abgebrochen werden kann.
Event
 Inherited
Gibt an, ob die angegebene Eigenschaft vorhanden ist und durchlaufen werden kann.
Object
 Inherited
Legt die Verfügbarkeit einer dynamischen Eigenschaft für Schleifenoperationen fest.
Object
 Inherited
Verhindert die Verarbeitung von Ereignis-Listenern im aktuellen Knoten und in Knoten, die dem aktuellen Knoten im Ereignisablauf nachfolgen.
Event
 Inherited
Verhindert die Verarbeitung von Ereignis-Listenern in Knoten, die dem aktuellen Knoten im Ereignisablauf nachfolgen.
Event
 Inherited
Gibt die Stringdarstellung dieses Objekts zurück, formatiert entsprechend den Konventionen des Gebietsschemas.
Object
  
[override] Gibt einen String zurück, der alle Eigenschaften des UncaughtErrorEvent-Objekts enthält.
UncaughtErrorEvent
 Inherited
Gibt den Grundwert des angegebenen Objekts zurück.
Object
Öffentliche Konstanten
 KonstanteDefiniert von
  UNCAUGHT_ERROR : String = "uncaughtError"
[statisch] Definiert den Wert der type-Eigenschaft eines uncaughtError-Ereignisobjekts.
UncaughtErrorEvent
Eigenschaftendetails

error

Eigenschaft
error:*  [schreibgeschützt]

Sprachversion: ActionScript 3.0
Laufzeitversionen: Flash Player 10.1, AIR 2

Das Fehlerobjekt, das mit dem nicht erfassten Fehler verknüpft ist. Normalerweise weist das Objekt einen der folgenden Datentypen auf:

  • Eine Error-Instanz (oder eine ihrer Unterklassen), wenn der nicht erfasste Fehler ein synchroner Fehler ist, der von einer throw-Anweisung erstellt wird, zum Beispiel ein Fehler, der mit einem try..catch-Block hätte erfasst werden können.
  • Eine Error-Instanz (oder eine ihrer Unterklassen), wenn der nicht erfasste Fehler ein asynchroner Fehler ist, der ein Fehlerereignis absetzt, wenn der Fehler auftritt

Die error-Eigenschaft kann jedoch ein Objekt jedes Datentyps sein. ActionScript erfordert keine throw-Anweisung, die nur mit Error-Objekten verwendet wird. Der folgende Code ist zum Beispiel sowohl zur Kompilierungszeit als auch zur Laufzeit zulässig:

throw new Sprite()

Wenn diese throw-Anweisung nicht durch einen try..catch-Block erfasst wird, löst die throw-Anweisung ein uncaughtError-Ereignis aus. In diesem Fall ist die error-Eigenschaft des UncaughtErrorEvent-Objekts, das abgesetzt wird, das Sprite-Objekt, das in der throw-Anweisung konstruiert wird.

Demzufolge sollten Sie in Ihrem uncaughtError-Listener den Datentyp der error-Eigenschaft überprüfen. Diese Überprüfung wird im folgenden Beispiel veranschaulicht:

         function uncaughtErrorHandler(event:UncaughtErrorEvent):void
         {
             var message:String;
             
             if (event.error is Error)
             {
                 message = Error(event.error).message;
             }
             else if (event.error is ErrorEvent)
             {
                 message = ErrorEvent(event.error).text;
             }
             else
             {
                 message = event.error.toString();
             }
         }

Wenn die error-Eigenschaft eine Error-Instanz (oder Error-Unterklasse) enthält, variieren die verfügbaren Fehlerinformationen je nach der Version der Laufzeitumgebung, in der der Inhalt ausgeführt wird:

  • In einer Debugger-Version der Laufzeitumgebung wie der Debugger-Version von Flash Player oder im AIR Debug Launcher (ADL):

    • Die Error.getStackTrace()-Methode gibt den Aufrufstapel zurück, der zu dem Fehler geführt hat
    • Error.message enthält den vollständigen Fehlermeldungstext
  • In einer Nicht-Debugger-Version der Laufzeitumgebung:

    • Die Error.getStackTrace()-Methode gibt den Aufrufstapel zurück, der zu dem Fehler geführt hat. Die Aufrufstapelinformationen schließen Quelldateinamen oder Zeilennummer nicht mit ein.
    • Die Error.message-Eigenschaft enthält eine Kurzversion der Fehlermeldung, häufig eine Kombination aus den Error.errorID- und Error.name-Eigenschaften
  • In einer Nicht-Debugger Version der Laufzeitumgebung (Flash Player 11.4 oder früher und AIR 1.4 oder früher):

    • Die Error.getStackTrace()-Methode gibt null zurück
    • Die Error.message-Eigenschaft enthält eine Kurzversion der Fehlermeldung, häufig eine Kombination aus den Error.errorID- und Error.name-Eigenschaften

Alle anderen Eigenschaften und Methoden der Error-Klasse sind in allen Versionen der Laufzeitumgebung verfügbar.

Beachten Sie, dass Anrufstapelinformationen nie verfügbar sind, wenn die error-Eigenschaft eine ErrorEvent-Instanz ist.



Implementierung
    public function get error():*
Konstruktordetails

UncaughtErrorEvent

()Konstruktor
public function UncaughtErrorEvent(type:String, bubbles:Boolean = true, cancelable:Boolean = true, error_in:* = null)

Sprachversion: ActionScript 3.0
Laufzeitversionen: Flash Player 10.1, AIR 2

Erstellt ein UncaughtErrorEvent-Objekt, das Informationen über ein uncaughtError-Ereignise enthält.

Parameter
type:String (default = NaN) — Der Ereignistyp.
 
bubbles:Boolean (default = true) — Bestimmt, ob das Ereignisobjekt an der Bubbling-Phase des Ereignisablaufs teilnimmt. Ereignis-Listener können über die übernommene Eigenschaft bubbles auf diese Informationen zugreifen.
 
cancelable:Boolean (default = true) — Bestimmt, ob das Ereignisobjekt abgebrochen werden kann. Ereignis-Listener können über die übernommene Eigenschaft cancelable auf diese Informationen zugreifen.
 
error_in:* (default = null) — Das Objekt, das mit dem Fehler verknüpft ist, der nicht erfasst oder verarbeitet wurde (unter normalen Umständen ein Error- oder ErrorEvent-Objekt).
Methodendetails

clone

()Methode
override public function clone():Event

Sprachversion: ActionScript 3.0
Laufzeitversionen: Flash Player 10.1, AIR 2

Erstellt eine Kopie des UncaughtErrorEvent-Objekts und stellt den Wert jeder Eigenschaft so ein, dass er dem Wert des Originals entspricht.

Rückgabewerte
Event — Ein neues UncaughtErrorEvent-Objekt mit Eigenschaftswerten, die denen des Originals entsprechen.

toString

()Methode 
override public function toString():String

Sprachversion: ActionScript 3.0
Laufzeitversionen: Flash Player 10.1, AIR 2

Gibt einen String zurück, der alle Eigenschaften des UncaughtErrorEvent-Objekts enthält.

Rückgabewerte
String — Ein String, der alle Eigenschaften des UncaughtErrorEvent-Objekts enthält.
Konstantendetails

UNCAUGHT_ERROR

Konstante
public static const UNCAUGHT_ERROR:String = "uncaughtError"

Sprachversion: ActionScript 3.0
Laufzeitversionen: Flash Player 10.1, AIR 2

Definiert den Wert der type-Eigenschaft eines uncaughtError-Ereignisobjekts.

Hinweis: Wenn Sie in einem Versuchsblock sind, gibt es einen Ereignisverteiler, der seinen Ereignishandler aufruft. Der Erfassungsblock erfasst den Fehler nicht, wenn er in einem Ereignishandler auftritt. Jeder Fehler, der anschließend ausgegeben wird, kann von LoaderInfo.uncaughtErrorEvents erfasst werden.

Dieses Ereignis verfügt über die folgenden Eigenschaften:

EigenschaftWert
bubblestrue
cancelabletrue; das Abbrechen des Ereignisses verhindert, dass das Dialogfeld für nicht erfasste Fehler in Debugger-Versionen der Laufzeitumgebung angezeigt wird
currentTargetDas Objekt, welches das Ereignisobjekt aktiv mit einem Ereignis-Listener verarbeitet.
errorDer nicht erfasste Fehler.
targetDas LoaderInfo-Objekt, das mit der SWF-Datei verknüpft ist, in der der Fehler aufgetreten ist.
textTextfehlermeldung.

UncaughtErrorEventExample.1.as

Das folgende Beispiel veranschaulicht die Verwendung einer Ereignisprozedur für nicht erfasste Fehler, um nicht erfasste Fehler in einem ActionScript-Projekt zu erkennen. Im Beispiel wird eine uncaughtError-Ereignisprozedur definiert, um nicht erfasste Fehler zu erkennen. Es stellt auch eine Schaltfläche bereit, die einen Fehler ausgibt, wenn auf sie geklickt wird. Dieser Fehler wird von der Ereignisprozedur für nicht erfasste Fehler erkannt.

Im Konstruktor registriert der Code einen Listener für das uncaughtError-Ereignis, das von der uncaughtErrorEvents-Eigenschaft des LoaderInfo-Objekts abgesetzt wird.

In der uncaughtErrorHandler()-Methode überprüft der Code den Datentyp der error-Eigenschaft und reagiert entsprechend.

package
{
    import flash.display.Sprite;
    import flash.events.ErrorEvent;
    import flash.events.MouseEvent;
    import flash.events.UncaughtErrorEvent;

    public class UncaughtErrorEventExample extends Sprite
    {
        public function UncaughtErrorEventExample()
        {
            loaderInfo.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, uncaughtErrorHandler);
            
            drawUI();
        }
        
        private function uncaughtErrorHandler(event:UncaughtErrorEvent):void
        {
            if (event.error is Error)
            {
                var error:Error = event.error as Error;
                // do something with the error
            }
            else if (event.error is ErrorEvent)
            {
                var errorEvent:ErrorEvent = event.error as ErrorEvent;
                // do something with the error
            }
            else
            {
                // a non-Error, non-ErrorEvent type was thrown and uncaught
            }
        }
        
        private function drawUI():void
        {
            var btn:Sprite = new Sprite();
            btn.graphics.clear();
            btn.graphics.beginFill(0xFFCC00);
            btn.graphics.drawRect(0, 0, 100, 50);
            btn.graphics.endFill();
            addChild(btn);
            btn.addEventListener(MouseEvent.CLICK, clickHandler);
        }
        
        private function clickHandler(event:MouseEvent):void
        {
            throw new Error("Gak!");
        }
    }
}
UncaughtErrorEventExample.1.5.as

Das folgende Beispiel ist die Flex-Entsprechung des vorstehenden Beispiels, wobei ein MXML-Dokument anstelle einer ActionScript-Klasse als Stamminhalt verwendet wird.
<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
                       xmlns:s="library://ns.adobe.com/flex/spark" 
                       xmlns:mx="library://ns.adobe.com/flex/halo"
                       applicationComplete="applicationCompleteHandler();">
    
    <fx:Script>
        <![CDATA[
            import flash.events.ErrorEvent;
            import flash.events.MouseEvent;
            import flash.events.UncaughtErrorEvent;
            
            private function applicationCompleteHandler():void
            {
                loaderInfo.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, uncaughtErrorHandler);
            }
    
            private function uncaughtErrorHandler(event:UncaughtErrorEvent):void
            {
                if (event.error is Error)
                {
                    var error:Error = event.error as Error;
                    // do something with the error
                }
                else if (event.error is ErrorEvent)
                {
                    var errorEvent:ErrorEvent = event.error as ErrorEvent;
                    // do something with the error
                }
                else
                {
                    // a non-Error, non-ErrorEvent type was thrown and uncaught
                }
            }
            
            private function clickHandler(event:MouseEvent):void
            {
                throw new Error("Gak!");
            }
        ]]>
    </fx:Script>
      
    <s:Button label="Cause Error" click="clickHandler(event);"/>
</s:WindowedApplication>
UncaughtErrorEventExample.2.as

Das folgende Beispiel veranschaulicht die Verwendung einer Ereignisprozedur für nicht erfasste Fehler, um nicht erfasste Fehler in einer geladenen SWF-Datei zu erkennen. Im Beispiel wird eine uncaughtError-Ereignisprozedur definiert, um nicht erfasste Fehler zu erkennen.

Im Konstruktor erstellt der Code ein Loader-Objekt und registriert einen Listener für das uncaughtError-Ereignis, das von der uncaughtErrorEvents-Eigenschaft des Loader-Objekts abgesetzt wird.

In der uncaughtErrorHandler()-Methode überprüft der Code den Datentyp der error-Eigenschaft und reagiert entsprechend.

package
{
    import flash.display.Loader;
    import flash.display.Sprite;
    import flash.events.ErrorEvent;
    import flash.events.UncaughtErrorEvent;
    import flash.net.URLRequest;

    public class LoaderUncaughtErrorEventExample extends Sprite
    {
        private var ldr:Loader;
        
        public function LoaderUncaughtErrorEventExample()
        {
            ldr = new Loader();
            ldr.load(new URLRequest("child.swf"));
            ldr.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, uncaughtErrorHandler);
        }
        
        private function uncaughtErrorHandler(event:UncaughtErrorEvent):void
        {
            if (event.error is Error)
            {
                var error:Error = event.error as Error;
                // do something with the error
            }
            else if (event.error is ErrorEvent)
            {
                var errorEvent:ErrorEvent = event.error as ErrorEvent;
                // do something with the error
            }
            else
            {
                // a non-Error, non-ErrorEvent type was thrown and uncaught
            }
        }
    }
}




[ X ]Warum auf Englisch?
Inhalt des ActionScript 3.0-Referenzhandbuchs wird in englischer Sprache angezeigt

Nicht alle Teile des ActionScript 3.0-Referenzhandbuchs wurden in alle Sprachen übersetzt. Wenn der Text zu einem Sprachelement nicht übersetzt wurde, wird er auf Englisch angezeigt. Zum Beispiel wurden die Informationen zur ga.controls.HelpBox-Klasse nicht in andere Sprachen übersetzt. In der deutschen Version des Referenzhandbuchs erscheint der Abschnitt zur ga.controls.HelpBox-Klasse deshalb auf Englisch.