Pakket | flash.events |
Klasse | public class UncaughtErrorEvent |
Overerving | UncaughtErrorEvent ErrorEvent TextEvent Event Object |
Taalversie: | ActionScript 3.0 |
Runtimeversies: | Flash Player 10.1, AIR 2 |
Poging..catch
blokkeert of wanneer er een ErrorEvent-object naar niet-geregistreerde listeners wordt verstuurd. De niet-afgevangen foutgebeurtenisfunctionaliteit wordt vaak omschreven als een 'globale fouthandler'.
Het UncaughtErrorEvents-object dat de gebeurtenis verstuurt, wordt aan een LoaderInfo-object of een Loader-object gekoppeld. Gebruik de volgende eigenschappen om een UncaughtErrorEvents-instantie te openen:
-
LoaderInfo.uncaughtErrorEvents
: voor het opsporen van niet-afgevangen fouten in code die in hetzelfde SWF-bestand zijn gedefinieerd. -
Loader.uncaughtErrorEvents
: voor het opsporen van niet-afgevangen fouten in code die in het SWF-bestand dat door een Loader-object geladen is, zijn verwerkt.
Wanneer een uncaughtError
-gebeurtenis plaatsvindt, zelfs als de gebeurtenis wordt toegepast, wordt de uitvoering niet voortgezet in de aanroepstack die de fout heeft veroorzaakt. Als de fout een synchrone fout is, wordt code die in de functie blijft staan waar de fout heeft plaatsgevonden, niet uitgevoerd. Het is hierdoor waarschijnlijk dat als er een niet-afgevangen fout plaatsvindt, uw toepassing zich in een onstabiele toestand bevindt. Omdat er veel oorzaken kunnen zijn voor een niet-afgevangen fout, kunnen we niet voorspellen welke functionaliteit beschikbaar is. Uw toepassing kan bijvoorbeeld misschien netwerkbewerkingen of bestandsbewerkingen uitvoeren. Zulke bewerkingen hoeven echter niet beschikbaar te zijn.
Wanneer de ene SWF de andere laadt, worden uncaughtError
-gebeurtenissen weer naar boven en naar beneden door de LoaderInfo-hiƫrarchie gekoppeld. Bijvoorbeeld: A.swf laadt B.swf met een Loader-instantie. Als er in B.swf een niet-afgevangen fout plaatsvindt, wordt er een uncaughtError
-gebeurtenis verstuurd naar LoaderInfo- en Loader-objecten in de volgende sequentie:
- (Vastleggingsfase) A.swf's LoaderInfo
- (Vastleggingsfase) Loader in A.swf
- (Doelfase) B.swf's LoaderInfo
- (Bubblefase) Loader in A.swf
- (Bubblefase) A.swf's LoaderInfo
De uncaughtErrorEvents
-eigenschap van een Loader-object verstuurt nooit een uncaughtErrorEvent
in de doelfase. Deze verstuurt de gebeurtenis alleen in de fasen opnemen en terugkoppelen.
Net als met andere bubbling, voorkomt het oproepen van stopPropagation()
of stopImmediatePropagation()
dat de gebeurtenis naar andere listeners wordt verstuurd, met een belangrijk verschil. Een UncaughtErrorEvents-object van een Loader-object wordt behandeld als deel van een paar met het LoaderInfo.uncaughtErrorEvents
-object van de geladen SWF voor doorgiftedoeleinden van gebeurtenissen. Als een listener die geregistreerd is met een van die objecten, de stopPropagation()
-methode oproept, worden gebeurtenissen nog steeds verstuurd naar andere listeners die geregistreerd zijn met dat UncaughtErrorEvents-object en naar listeners die geregistreerd zijn met zijn bijhorende UncaughtErrorEvents-object voordat de gebeurtenisdoorgifte eindigt. De stopImmediatePropagation()
-methode voorkomt dat gebeurtenissen naar alle extra listeners worden verstuurd.
Wanneer er content actief is in een foutopsporingsversie van de runtime, zoals de foutopsporingsversie van Flash Player of de AIR Debug Launcher (ADL), verschijnt er een dialoogvenster voor niet-afgevangen fouten wanneer er een niet-afgevangen fout optreedt. Voor zulke runtimeversies, verschijnt er zelfs een foutdialoogvenster wanneer er voor de uncaughtError
-gebeurtenis een listener is geregistreerd. Om te voorkomen dat er in die situatie een dialoogvenster verschijnt, roept u de preventDefault()
-methode van het UncaughtErrorEvent-object op.
Als de door een Loader-object geladen inhoud een SWF-bestand in AVM1 (ActionScript 2) is, resulteren niet-afgevangen fouten in het SWF-bestand in AVM1 niet in een uncaughtError
-gebeurtenis. Ook JavaScript-fouten in HTML-inhoud die is geladen in een HTMLLoader-object (zoals een HTML-besturingselement in Flex) resulteren niet in een uncaughtError
-gebeurtenis.
Verwante API-elementen
Eigenschap | Gedefinieerd door | ||
---|---|---|---|
bubbles : Boolean [alleen-lezen]
Geeft aan of een gebeurtenis een terugkoppelgebeurtenis is. | Event | ||
cancelable : Boolean [alleen-lezen]
Geeft aan of het gedrag dat aan deze gebeurtenis is gekoppeld, kan worden voorkomen. | Event | ||
constructor : Object
Verwijzing naar het klasseobject of de constructorfunctie van een bepaalde objectinstantie. | Object | ||
currentTarget : Object [alleen-lezen]
Het object dat het gebeurtenisobject actief verwerkt met een gebeurtenislistener. | Event | ||
error : * [alleen-lezen]
Het foutobject dat aan de niet-afgevangen fout is gekoppeld. | UncaughtErrorEvent | ||
errorID : int [alleen-lezen]
Bevat het referentienummer dat aan de specifieke fout is gekoppeld. | ErrorEvent | ||
eventPhase : uint [alleen-lezen]
De huidige fase in de gebeurtenisstroom. | Event | ||
target : Object [alleen-lezen]
Doel van gebeurtenis. | Event | ||
text : String
Het teken of de tekenreeks dat/die door de gebruiker is ingevoerd voor een gebeurtenis textInput. | TextEvent | ||
type : String [alleen-lezen]
Het type gebeurtenis. | Event |
Methode | Gedefinieerd door | ||
---|---|---|---|
UncaughtErrorEvent(type:String, bubbles:Boolean = true, cancelable:Boolean = true, error_in:* = null)
Maakt een UncaughtErrorEvent-object dat informatie bevat over een uncaughtError-gebeurtenis. | UncaughtErrorEvent | ||
[overschrijven]
Maakt een kopie van een UncaughtErrorEvent-object en stelt de waarde van elke eigenschap in zodat deze overeenkomt met die van het origineel. | UncaughtErrorEvent | ||
Een hulpprogrammafunctie voor de implementatie van de methode toString() in aangepaste ActionScript 3.0-Event-klassen. | Event | ||
Geeft aan of voor een object een opgegeven eigenschap is gedefinieerd. | Object | ||
Controleert of de methode preventDefault() is aangeroepen voor de gebeurtenis. | Event | ||
Geeft aan of een instantie van de klasse Object zich in de prototypeketen van het object bevindt dat als parameter is opgegeven. | Object | ||
Annuleert het standaardgedrag van een gebeurtenis wanneer dat gedrag kan worden geannuleerd. | Event | ||
Geeft aan of de opgegeven eigenschap bestaat en kan worden opgesomd. | Object | ||
Stelt de beschikbaarheid van een dynamische eigenschap voor lusbewerkingen in. | Object | ||
Voorkomt het verwerken van gebeurtenislisteners in het huidige knooppunt en volgende knooppunten in de gebeurtenisstroom. | Event | ||
Voorkomt het verwerken van gebeurtenislisteners in knooppunten die volgen op het huidige knooppunt in de gebeurtenisstroom. | Event | ||
Geeft de tekenreeksweergave van dit object weer, geformatteerd volgens de locatiespecifieke conventies. | Object | ||
[overschrijven]
Retourneert een tekenreeks die alle eigenschappen van het UncaughtErrorEvent-object bevat. | UncaughtErrorEvent | ||
Retourneert de primitieve waarde van het opgegeven object. | Object |
Constante | Gedefinieerd door | ||
---|---|---|---|
UNCAUGHT_ERROR : String = "uncaughtError" [statisch]
Definieert de waarde van de eigenschap type van een uncaughtError-gebeurtenisobject . | UncaughtErrorEvent |
error | eigenschap |
error:*
[alleen-lezen] Taalversie: | ActionScript 3.0 |
Runtimeversies: | Flash Player 10.1, AIR 2 |
Het foutobject dat aan de niet-afgevangen fout is gekoppeld. Het gegevenstype van dit object is normaal gezien een van de volgende:
- Een Error-instantie (of een van zijn subklassen), als de niet-afgevangen fout een synchrone fout is die is gemaakt door een
throw
-instructie, zoals een fout die had kunnen worden afgevangen met eenTry..catch
- Een ErrorEvent-instantie (of een van zijn subklassen) als de niet-afgevangen fout een synchrone fout is die een foutgebeurtenis verstuurt wanneer er een fout optreedt.
De Error
-eigenschap kan echter een object van eender welk gegevenstype zijn. ActionScript vereist geen throw
-instructie die alleen met Error-objecten wordt gebruikt. De volgende code is bijvoorbeeld geldig tijdens de samenstelling en de runtime.
throw new Sprite()
Als die throw
-instructie niet wordt afgevangen door een Try..catch
-blok, de throw
-instructie lokt een uncaughtError
-gebeurtenis uit. In dat geval, is de error
-eigenschap van het UncaughtErrorEvent-object dat verstuurd wordt, het Sprite-object dat wordt samengesteld in de throw
-instructie.
U moet daarom in uw uncaughtError
-listener het gegevenstype van de Error
controleren. Deze controle wordt in het volgende voorbeeld getoond:
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(); } }
Als de error
-eigenschap een Error-instantie (of een Error-subklasse) bevat, varieert de beschikbare foutinformatie afhankelijk van de versie van de runtime waarin de content actief is als volgt:
In een foutopsporingsversie van de runtime, zoals de foutopsporingsversie van Flash Player of de AIR Debug Launcher (ADL):
- De
Error.getStackTrace()
-methode retourneert de aanroepstack die tot de fout heeft geleid - De
Error.message
bevat de volledige tekst van het foutbericht
- De
In een niet-foutopsporingsversie van de runtime:
- De
Error.getStackTrace()
-methode retourneert de aanroepstack die tot de fout heeft geleid. De aanroepstackinformatie bevat echter geen bronbestandsnamen of geen regelnummers. - De eigenschap
Error.message
bevat een korte versie van het foutbericht, die vaak een combinatie is van de eigenschappenError.errorID
enError.name
- De
In een niet-foutopsporingsversie van de runtime (Flash Player 11.4 of lager en AIR 1.4 of lager):
- De
Error.getStackTrace()
-methode retourneertnull
- De eigenschap
Error.message
bevat een korte versie van het foutbericht, die vaak een combinatie is van de eigenschappenError.errorID
enError.name
- De
Alle andere eigenschappen en methoden van de Error-klasse zijn beschikbaar in alle runtimeversies.
Als de eigenschap error
een ErrorEvent-instantie is, is de aanroepstackinformatie nooit beschikbaar.
Implementatie
public function get error():*
UncaughtErrorEvent | () | Constructor |
public function UncaughtErrorEvent(type:String, bubbles:Boolean = true, cancelable:Boolean = true, error_in:* = null)
Taalversie: | ActionScript 3.0 |
Runtimeversies: | Flash Player 10.1, AIR 2 |
Maakt een UncaughtErrorEvent-object dat informatie bevat over een uncaughtError
-gebeurtenis.
type:String (default = NaN ) — Het type gebeurtenis.
| |
bubbles:Boolean (default = true ) — Bepaalt of het Event-object deelneemt aan de terugkoppelfase van de gebeurtenisstroom. Gebeurtenislisteners hebben toegang tot deze informatie via de overerfde eigenschap bubbles .
| |
cancelable:Boolean (default = true ) — Bepaalt of het Event-object kan worden geannuleerd. Gebeurtenislisteners hebben toegang tot deze informatie via de overerfde eigenschap cancelable .
| |
error_in:* (default = null ) — Het object dat gekoppeld is aan de fout die niet afgevangen of gehandled is (een Error- of ErrorEvent-object in normale omstandigheden).
|
clone | () | methode |
override public function clone():Event
Taalversie: | ActionScript 3.0 |
Runtimeversies: | Flash Player 10.1, AIR 2 |
Maakt een kopie van een UncaughtErrorEvent-object en stelt de waarde van elke eigenschap in zodat deze overeenkomt met die van het origineel.
Geretourneerde waardeEvent — Een nieuw UncaughtErrorEvent-object met de eigenschapswaarden die overeenkomen met het origineel.
|
toString | () | methode |
override public function toString():String
Taalversie: | ActionScript 3.0 |
Runtimeversies: | Flash Player 10.1, AIR 2 |
Retourneert een tekenreeks die alle eigenschappen van het UncaughtErrorEvent-object bevat.
Geretourneerde waardeString — Een tekenreeks die alle eigenschappen van het UncaughtErrorEvent-object bevat.
|
UNCAUGHT_ERROR | Constante |
public static const UNCAUGHT_ERROR:String = "uncaughtError"
Taalversie: | ActionScript 3.0 |
Runtimeversies: | Flash Player 10.1, AIR 2 |
Definieert de waarde van de eigenschap type
van een uncaughtError
-gebeurtenisobject .
Opmerking: als een gebeurtenisdispatcher in een try-blok zijn gebruikshandler aanroept, wordt de fout niet afgevangen door het catch-blok indien deze in de gebeurtenishandler wordt gegenereerd. Elke volgende fout die wordt gegenereerd kan worden afgevangen door te luisteren naar LoaderInfo.uncaughtErrorEvents
.
Deze gebeurtenis heeft de volgende eigenschappen:
Eigenschap | Waarde |
---|---|
bubbles | true |
cancelable | true ; door de gebeurtenis te annuleren, voorkomt u dat het dialoogvenster voor niet-afgevangen fouten verschijnt in runtimeversies voor foutopsporing. |
currentTarget | Het object dat het gebeurtenisobject actief verwerkt met een gebeurtenislistener. |
error | De niet-afgevangen fout. |
target | Het LoaderInfo-object dat aan de SWF gekoppeld was toen de fout optrad. |
text | Tekst foutbericht. |
uncaughtError
-gebeurtenishandler voor het opsporen van niet-afgevangen fouten. Deze voorziet een knop waarmee, als erop wordt gedrukt, er een fout optreedt die door een niet-afgevangen fouthandler wordt gevangen.
In de constructor, registreert de code een listener voor de uncaughtError
-gebeurtenis die door de uncaughtErrorEvents
-eigenschap van het LoaderInfo-object is verstuurd.
In de uncaughtErrorHandler()
-methode controleert de code het gegevenstype van de error
-eigenschap en reageert deze overeenstemmend.
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
-gebeurtenishandler voor het opsporen van niet-afgevangen fouten.
In de constructor, maakt de code een Loader-object en registreert deze een listener voor de uncaughtError
-gebeurtenis die door de uncaughtErrorEvents
-eigenschap van het Loader-object is verstuurd..
In de uncaughtErrorHandler()
-methode controleert de code het gegevenstype van de error
-eigenschap en reageert deze overeenstemmend.
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 } } } }
Wed Jun 13 2018, 11:42 AM Z