Paket | flash.events |
Klass | public class UncaughtErrorEvent |
Arv | UncaughtErrorEvent ErrorEvent TextEvent Event Object |
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | Flash Player 10.1, AIR 2 |
try..catch
-block eller när ett ErrorEvent-objekt skickas utan några registrerade avlyssnare. Händelsehantering av ohanterade fel beskrivs ofta som en ”global händelsehanterare”.
Det UncaughtErrorEvents-objekt som skickar händelsen är kopplat till antingen ett LoaderInfo-objekt eller ett Loader-objekt. Använd följande egenskaper för att få tillgång till en UncaughtErrorEvents-instans:
-
LoaderInfo.uncaughtErrorEvents
: om du vill identifiera ohanterade fel i kod som definieras i samma SWF-fil. -
Loader.uncaughtErrorEvents
: om du vill identifiera ohanterade fel i kod som definieras i den SWF-fil som lästs in av ett Loader-objekt.
När en uncaughtError
-händelse inträffar fortsätter inte körningen i den anropsstack som orsakade felet, även om händelsen hanteras. Om det är ett synkront fel körs ingen ytterligare kod som kvarstår i den funktion där felet inträffar. Följaktligen är det troligt att programmet är instabilt när ett ohanterat fel inträffar. Eftersom ett ohanterat fel kan bero på flera olika saker är det omöjligt att förutsäga vilka funktioner som är tillgängliga. Programmet kan till exempel klara att köra nätverks- eller filåtgärder. Men de åtgärderna kanske inte är tillgängliga.
När en SWF-fil läses in av en annan bubblar uncaughtError
-händelser neråt och uppåt igen genom LoaderInfo-hierarkin. Anta till exempel att A.swf läser in B.swf med hjälp av en Loader-instans. Om ett ohanterat fel inträffar i B.swf skickas en uncaughtError
-händelse till LoaderInfo- och Loader-objekten i följande sekvens:
- (Hämtningsfas) A.swf-filens LoaderInfo
- (Hämtningsfas) Loader i A.swf
- (Målfas) B.swf-filens LoaderInfo
- (Bubblingsfas) Loader i A.swf
- (Bubblingsfas) A.swf-filens LoaderInfo
Egenskapen uncaughtErrorEvents
för ett Loader-objekt skickar aldrig uncaughtErrorEvent
i målfasen. Händelsen skickas bara i hämtnings- och bubblingsfaserna.
Precis som för andra bubblingshändelser hindrar anrop till stopPropagation()
eller stopImmediatePropagation()
händelsen från att skickas till andra avlyssnare, med en viktig skillnad. Ett Loader-objekts UncaughtErrorEvents-objekt behandlas som ett par tillsammans med den inlästa SWF-filens LoaderInfo.uncaughtErrorEvents
-objekt i händelsespridningssyfte. Om en avlyssnade som registrerats med ett av de objekten anropar metoden stopPropagation()
skickas händelser ändå till andra avlyssnare som har registrerats med det UncaughtErrorEvents-objektet och till avlyssnare som har registrerats med dess UncaughtErrorEvents-parobjekt innan händelsespridningen avslutas. Metoden stopImmediatePropagation()
hindrar fortfarande händelser från att skickas till alla andra avlyssnare.
När innehåll körs i en felsökningsversion av miljön, till exempel felsökningsversionen av Flash Player eller AIR Debug Launcher (ADL), visas en dialogruta för ohanterade fel när ett sådant inträffar. För dessa versioner visas feldialogrutan även om en avlyssnare har registrerats för uncaughtError
-händelsen. Om du inte vill visa dialogrutan i den situationen anropar du metoden preventDefault()
för UncaughtErrorEvent-objektet.
Om det innehåll som läses in av ett Loader-objekt är en AVM1 (ActionScript 2) SWF-fil ger ohanterade fel i AVM1 SWF-filen inte upphov till någon uncaughtError
-händelse. Dessutom ger JavaScript-fel i HTML-innehåll som lästs in i ett HTMLLoader-objekt (inklusive en Flex HTML-kontroll) inte upphov till någon uncaughtError
-händelse.
Relaterade API-element
Egenskap | Definieras med | ||
---|---|---|---|
bubbles : Boolean [skrivskyddad]
indikerar om händelsen är en bubblande händelse. | Event | ||
cancelable : Boolean [skrivskyddad]
Indikerar om beteendet som är kopplat till händelsen kan förhindras. | Event | ||
constructor : Object
En referens till klassobjektet eller konstruktorfunktionen för en given objektinstans. | Object | ||
currentTarget : Object [skrivskyddad]
Det objekt som aktivt behandlar Event-objektet med en händelseavlyssnare. | Event | ||
error : * [skrivskyddad]
Det felobjekt som är associerat med det ohanterade felet. | UncaughtErrorEvent | ||
errorID : int [skrivskyddad]
Innehåller referensnumret som är associerat med det specifika felet. | ErrorEvent | ||
eventPhase : uint [skrivskyddad]
Den nuvarande fasen i händelseflödet. | Event | ||
target : Object [skrivskyddad]
Händelsens mål. | Event | ||
text : String
Det tecken eller den teckensekvens som användaren anger för en textInput-händelse. | TextEvent | ||
type : String [skrivskyddad]
Händelsens typ. | Event |
Metod | Definieras med | ||
---|---|---|---|
UncaughtErrorEvent(type:String, bubbles:Boolean = true, cancelable:Boolean = true, error_in:* = null)
Skapar ett UncaughtErrorEvent-objekt som innehåller information om en uncaughtError-händelse. | UncaughtErrorEvent | ||
[åsidosätt]
Skapar en kopia av UncaughtErrorEvent-objektet och ställer in värdet för alla egenskaper så att de matchar originalets egenskaper. | UncaughtErrorEvent | ||
Ett verktyg som används för att implementera metoden toString() i de anpassade klasserna ActionScript 3.0. | Event | ||
Anger om det finns en egenskap angiven för ett objekt. | Object | ||
Kontrollerar om preventDefault()-metoden har anropats för händelsen. | Event | ||
Anger om en instans av klassen Object finns i prototypkedjan för objektet som anges som parameter. | Object | ||
Avbryter en händelses standardbeteende om det beteendet kan avbrytas. | Event | ||
Anger om den angivna egenskapen finns och är uppräkningsbar. | Object | ||
Anger tillgänglighet för en dynamisk egenskap för slingåtgärder. | Object | ||
Förhindrar behandling av händelsehanterare i den aktuella noden och alla noder som följer den aktuella noden i händelseflödet. | Event | ||
Förhindrar behandling av händelsehanterare i noder som följer den aktuella noden i händelseflödet. | Event | ||
Returnerar det här objektets strängrepresentation, formaterad i enlighet med språkspecifika konventioner. | Object | ||
[åsidosätt]
Returnerar en sträng som innehåller alla egenskaper för UncaughtErrorEvent-objektet. | UncaughtErrorEvent | ||
Returnerar det angivna objektets primitiva värde. | Object |
Konstant | Definieras med | ||
---|---|---|---|
UNCAUGHT_ERROR : String = "uncaughtError" [statisk]
Definierar värdet på type-egenskapen i ett uncaughtError-händelseobjekt. | UncaughtErrorEvent |
error | egenskap |
error:*
[skrivskyddad] Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | Flash Player 10.1, AIR 2 |
Det felobjekt som är associerat med det ohanterade felet. Det här objektets datatyp är vanligtvis någon av följande:
- En Error-instans (eller någon av dess underklasser), om det ohanterade felet är ett synkront fel som skapats av en
throw
-sats, till exempel ett fel som kunde ha hanterats med hjälp av etttry..catch
-block - En ErrorEvent-instans (eller någon av dess underklasser), om det ohanterade felet är ett asynkront fel som skickar en felhändelse när felet inträffar.
Egenskapen error
kan eventuellt vara ett objekt med vilken datatyp som helst. ActionScript kräver ingen throw
-sats som bara ska användas med Error-objekt. Följande kod är till exempel giltig både vid kompilering och körning:
throw new Sprite()
Om den throw
-satsen inte hanteras av ett try..catch
-block, utlöser throw
-satsen en uncaughtError
-händelse. I så fall är error
-egenskapen för det UncaughtErrorEvent-objekt som skickas det Sprite-objekt som skapas i throw
-satsen.
Du bör därför kontrollera datatypen för error
-egenskapen i uncaughtError
-avlyssnaren. Detta visas i följande exempel:
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(); } }
Om egenskapen error
innehåller en Error-instans (eller en Error-underklass) varierar den tillgängliga felinformationen beroende på i vilken version av miljön innehållet körs enligt följande:
I en felsökningsversion av miljön som exempelvis felsökningsversionen för Flash Player eller ADL (AIR Debug Launcher):
- Metoden
Error.getStackTrace()
returnerar den anropsstack som ledde till felet Error.message
innehåller den fullständiga felmeddelandetexten
- Metoden
I en icke-felsökningsversion av miljön:
- Metoden
Error.getStackTrace()
returnerar den anropsstack som ledde till felet. Emellertid innehåller anropsstacksinformationen inte källfilsnamn eller radnummer. - Egenskapen
Error.message
innehåller en kort version av felmeddelandet, vilket ofta är en kombination av egenskapernaError.errorID
ochError.name
- Metoden
I en icke-felsökningsversion av miljön (Flash Player 11.4 eller tidigare och AIR 1.4 eller tidigare):
- Metoden
Error.getStackTrace()
returnerarnull
- Egenskapen
Error.message
innehåller en kort version av felmeddelandet, vilket ofta är en kombination av egenskapernaError.errorID
ochError.name
- Metoden
Alla andra egenskaper och metoder för klassen Error är tillgängliga i alla versioner.
Observera att om felegenskapen
är en ErrorEvent-instans så är anropsstacksinformationen aldrig tillgänglig.
Implementering
public function get error():*
UncaughtErrorEvent | () | Konstruktor |
public function UncaughtErrorEvent(type:String, bubbles:Boolean = true, cancelable:Boolean = true, error_in:* = null)
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | Flash Player 10.1, AIR 2 |
Skapar ett UncaughtErrorEvent-objekt som innehåller information om en uncaughtError
-händelse.
type:String (default = NaN ) — Händelsens typ.
| |
bubbles:Boolean (default = true ) — Bestämmer om Event-objektet deltar i bubblingssteget av händelseflödet. Händelseavlyssnare kan hämta informationen genom den ärvda egenskapen bubbles .
| |
cancelable:Boolean (default = true ) — Avgör om Event-objektet kan avbrytas. Händelseavlyssnare kan hämta informationen genom den ärvda egenskapen cancelable .
| |
error_in:* (default = null ) — Det objekt som är associerat med felet som inte hanterades (vanligtvis ett Error- eller ErrorEvent-objekt).
|
clone | () | metod |
override public function clone():Event
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | Flash Player 10.1, AIR 2 |
Skapar en kopia av UncaughtErrorEvent-objektet och ställer in värdet för alla egenskaper så att de matchar originalets egenskaper.
ReturnerarEvent — Ett nytt UncaughtErrorEvent-objekt med egenskapsvärden som matchar originalet.
|
toString | () | metod |
UNCAUGHT_ERROR | Konstant |
public static const UNCAUGHT_ERROR:String = "uncaughtError"
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | Flash Player 10.1, AIR 2 |
Definierar värdet på type
-egenskapen i ett uncaughtError
-händelseobjekt.
Obs! Om det finns ett EventDispatcher-objekt som anropar sin händelsehanterare i ett try-block fångar catch-blocket inte felet om det genereras i händelsehanteraren. Alla fel som genereras efter detta kan fångas genom att LoaderInfo.uncaughtErrorEvents
avlyssnas.
Den här händelsen har följande egenskaper:
Egenskap | Värde |
---|---|
bubbles | true |
cancelable | true ; om händelsen avbryts visas inte dialogrutan för ohanterat fel i felsökningsversioner av miljön |
currentTarget | Det objekt som aktivt behandlar Event-objektet med en händelseavlyssnare. |
error | Det ohanterade felet. |
target | Det LoaderInfo-objekt som är associerat med den SWF-fil där felet inträffade. |
text | Felmeddelandets text. |
uncaughtError
-händelsehanterare som identifierar ohanterade fel. Det finns också en knapp som, när någon klickar på den, genererar ett fel som hanteras av hanteraren för ohanterade fel.
En avlyssnare registreras i konstruktorn för den uncaughtError
-händelse som skickas av Loader-objektets uncaughtErrorEvents
-egenskap.
I metoden uncaughtErrorHandler()
kontrollerar koden datatypen för egenskapen error
och svarar på lämpligt sätt.
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
-händelsehanterare som identifierar ohanterade fel.
Ett Loader-objekt skapas i konstruktorn och en avlyssnare registreras för den uncaughtError
-händelse som skickas av Loader-objektets uncaughtErrorEvents
-egenskap.
I metoden uncaughtErrorHandler()
kontrollerar koden datatypen för egenskapen error
och svarar på lämpligt sätt.
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, 01:40 PM Z