Paket | flash.events |
Klasse | public class UncaughtErrorEvent |
Vererbung | UncaughtErrorEvent ErrorEvent TextEvent Event Object |
Sprachversion: | ActionScript 3.0 |
Laufzeitversionen: | Flash Player 10.1, AIR 2 |
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:
- (Erfassungsphase) LoaderInfo von A.swf
- (Erfassungsphase) Loader in A.swf
- (Zielphase) LoaderInfo von B.swf
- (Bubbling-Phase) Loader in A.swf
- (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.
Verwandte API-Elemente
Eigenschaft | Definiert von | ||
---|---|---|---|
bubbles : Boolean [schreibgeschützt]
Gibt an, ob es sich bei dem Ereignis um ein Bubbling-Ereignis handelt. | Event | ||
cancelable : Boolean [schreibgeschützt]
Gibt an, ob das mit dem Ereignis verknüpfte Verhalten verhindert werden kann. | Event | ||
constructor : Object
Ein Verweis auf das Klassenobjekt oder die Konstruktorfunktion für eine angegebene Objektinstanz. | Object | ||
currentTarget : 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 | ||
errorID : int [schreibgeschützt]
Enthält die Verweisnummer, die dem spezifischen Fehler zugeordnet ist. | ErrorEvent | ||
eventPhase : uint [schreibgeschützt]
Die aktuelle Phase im Ereignisablauf. | Event | ||
target : Object [schreibgeschützt]
Das Ereignis-Ziel. | Event | ||
text : String
Bei einem textInput-Ereignis das bzw. die vom Benutzer eingegebene(n) Zeichen. | TextEvent | ||
type : String [schreibgeschützt]
Der Ereignistyp. | Event |
Methode | Definiert 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 | ||
Eine Dienstprogrammfunktion zur Implementierung der toString()-Methode in benutzerdefinierten ActionScript 3.0 Event-Klassen. | Event | ||
Gibt an, ob für ein Objekt eine bestimmte Eigenschaft definiert wurde. | Object | ||
Überprüft, ob die preventDefault()-Methode bei dem Ereignis aufgerufen wurde. | Event | ||
Gibt an, ob eine Instanz der Object-Klasse in der Prototypkette des Objekts vorhanden ist, das als Parameter angegeben wurde. | Object | ||
Bricht das Standardverhalten eines Ereignisses ab, wenn dieses Verhalten abgebrochen werden kann. | Event | ||
Gibt an, ob die angegebene Eigenschaft vorhanden ist und durchlaufen werden kann. | Object | ||
Legt die Verfügbarkeit einer dynamischen Eigenschaft für Schleifenoperationen fest. | Object | ||
Verhindert die Verarbeitung von Ereignis-Listenern im aktuellen Knoten und in Knoten, die dem aktuellen Knoten im Ereignisablauf nachfolgen. | Event | ||
Verhindert die Verarbeitung von Ereignis-Listenern in Knoten, die dem aktuellen Knoten im Ereignisablauf nachfolgen. | Event | ||
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 | ||
Gibt den Grundwert des angegebenen Objekts zurück. | Object |
Konstante | Definiert von | ||
---|---|---|---|
UNCAUGHT_ERROR : String = "uncaughtError" [statisch]
Definiert den Wert der type-Eigenschaft eines uncaughtError-Ereignisobjekts. | UncaughtErrorEvent |
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 einemtry..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
- Die
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 denError.errorID
- undError.name
-Eigenschaften
- Die
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 gibtnull
zurück - Die
Error.message
-Eigenschaft enthält eine Kurzversion der Fehlermeldung, häufig eine Kombination aus denError.errorID
- undError.name
-Eigenschaften
- Die
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():*
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.
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).
|
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ückgabewerteEvent — 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ückgabewerteString — Ein String, der alle Eigenschaften des UncaughtErrorEvent-Objekts enthält.
|
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:
Eigenschaft | Wert |
---|---|
bubbles | true |
cancelable | true ; das Abbrechen des Ereignisses verhindert, dass das Dialogfeld für nicht erfasste Fehler in Debugger-Versionen der Laufzeitumgebung angezeigt wird |
currentTarget | Das Objekt, welches das Ereignisobjekt aktiv mit einem Ereignis-Listener verarbeitet. |
error | Der nicht erfasste Fehler. |
target | Das LoaderInfo-Objekt, das mit der SWF-Datei verknüpft ist, in der der Fehler aufgetreten ist. |
text | Textfehlermeldung. |
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!"); } } }
<?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>
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 } } } }
Tue Jun 12 2018, 10:04 AM Z