Package | flash.events |
Class | public class UncaughtErrorEvent |
Inheritance | UncaughtErrorEvent ErrorEvent TextEvent Event Object |
Language version: | ActionScript 3.0 |
Runtime version: | AIR 2 |
try..catch
blocks or when an ErrorEvent
object is dispatched with no registered listeners. The uncaught error event
functionality is often described as a "global error handler."
The UncaughtErrorEvents object that dispatches the event is associated with either a LoaderInfo object or a Loader object. Use the following properties to access an UncaughtErrorEvents instance:
LoaderInfo.uncaughtErrorEvents
: to
detect uncaught errors in code defined in the same SWF.Loader.uncaughtErrorEvents
: to detect uncaught
errors in code defined in the SWF loaded by a Loader object.When an uncaughtError
event happens, even if the event is handled,
execution does not continue in the call stack that caused the error. If the error is
a synchronous error, any code remaining in the function where the error happened is
not executed. Consequently, it is likely that when an uncaught error event happens,
your application is in an unstable state. Since there can be many causes for an
uncaught error, it is impossible to predict what functionality is available. For
example, your application may be able to execute network operations or file
operations. However, those operations aren't necessarily available.
When one SWF loads another, uncaughtError
events bubble down and up
again through the LoaderInfo heirarchy. For example, suppose A.swf loads B.swf using a
Loader instance. If an uncaught error occurs in B.swf, an uncaughtError
event is dispatched to LoaderInfo and Loader objects in the following
sequence:
A Loader object's uncaughtErrorEvents
property
never dispatches an uncaughtErrorEvent
in the target phase. It only
dispatches the event in the capture and bubbling phases.
As with other event bubbling, calling stopPropagation()
or
stopImmediatePropagation()
stops the event from being dispatched
to any other listeners, with one important difference. A Loader object's
UncaughtErrorEvents object is treated as a pair with the loaded SWF's
LoaderInfo.uncaughtErrorEvents
object for event propagation purposes.
If a listener registered with one of those objects calls the stopPropagation()
method, events are still dispatched to other listeners registered with that
UncaughtErrorEvents object and to listeners registered with its partner
UncaughtErrorEvents object before event propagation ends. The
stopImmediatePropagation()
method still prevents events from being
dispatched to all additional listeners.
When content is running in a debugger version of the runtime, such as the
debugger version of Flash Player or the AIR Debug Launcher (ADL), an uncaught
error dialog appears when an uncaught error happens.
For those runtime versions, the error dialog appears even when a listener is registered
for the uncaughtError
event. To prevent the dialog from appearing
in that situation, call the UncaughtErrorEvent object's
preventDefault()
method.
If the content loaded by a Loader object is an AVM1 (ActionScript 2) SWF file,
uncaught errors in the AVM1 SWF file do not result in an uncaughtError
event. In addition, JavaScript errors in HTML content loaded in an HTMLLoader object
(including a Flex HTML control) do not result in an uncaughtError
event.
See also
Property | Defined by | ||
---|---|---|---|
bubbles : Boolean
Indicates whether an event is a bubbling event.
| Event | ||
cancelable : Boolean
Indicates whether the behavior associated with the event can be prevented.
| Event | ||
constructor : Object
A reference to the class object or constructor function for a given object instance.
| Object | ||
currentTarget : Object
The object that is actively processing the Event object with an event listener.
| Event | ||
error : *
[read-only]
The error object associated with the uncaught error.
| UncaughtErrorEvent | ||
errorID : int
Contains the reference number associated with the specific error.
| ErrorEvent | ||
eventPhase : uint
The current phase in the event flow.
| Event | ||
prototype : Object
[static]
A reference to the prototype object of a class or function object.
| Object | ||
target : Object
The event target.
| Event | ||
text : String
For a
textInput event, the character or sequence of characters
entered by the user. | TextEvent | ||
type : String
The type of event.
| Event |
Method | Defined by | ||
---|---|---|---|
UncaughtErrorEvent(type:String, bubbles:Boolean = true, cancelable:Boolean = true, error_in:* = null)
Creates an UncaughtErrorEvent object that contains information about an
uncaughtError event. | UncaughtErrorEvent | ||
Creates a copy of the UncaughtErrorEvent object and sets the value of
each property to match that of the original.
| UncaughtErrorEvent | ||
A utility function for implementing the
toString() method in custom
ActionScript 3.0 Event classes. | Event | ||
Indicates whether an object has a specified property defined.
| Object | ||
Checks whether the
preventDefault() method has been called on the event. | Event | ||
Indicates whether an instance of the Object class is in the prototype chain of the object specified
as the parameter.
| Object | ||
Cancels an event's default behavior if that behavior can be canceled.
| Event | ||
Indicates whether the specified property exists and is enumerable.
| Object | ||
Sets the availability of a dynamic property for loop operations.
| Object | ||
Prevents processing of any event listeners in the current node and any subsequent nodes in
the event flow.
| Event | ||
Prevents processing of any event listeners in nodes subsequent to the current node in the
event flow.
| Event | ||
Returns the string representation of this object, formatted according to locale-specific conventions.
| Object | ||
Returns a string that contains all the properties of the UncaughtErrorEvent object.
| UncaughtErrorEvent | ||
Returns the primitive value of the specified object.
| Object |
Constant | Defined by | ||
---|---|---|---|
ACTIVATE : String = "activate" [static]
The
ACTIVATE constant defines the value of the type property of an activate event object. | Event | ||
ADDED : String = "added" [static]
The
Event.ADDED constant defines the value of the type property of
an added event object. | Event | ||
ADDED_TO_STAGE : String = "addedToStage" [static]
The
Event.ADDED_TO_STAGE constant defines the value of the type
property of an addedToStage event object. | Event | ||
BROWSER_ZOOM_CHANGE : String = "browserZoomChange" [static]
The
Event.BROWSER_ZOOM_CHANGE constant defines the value of the type
property of an browserZoomChange event object. | Event | ||
CANCEL : String = "cancel" [static]
The
Event.CANCEL constant defines the value of the type property of a cancel event object. | Event | ||
CHANGE : String = "change" [static]
The
Event.CHANGE constant defines the value of the type property of a change event object. | Event | ||
CHANNEL_MESSAGE : String = "channelMessage" [static]
The
Event.CHANNEL_MESSAGE constant defines the value of the type property of a channelMessage event object. | Event | ||
CHANNEL_STATE : String = "channelState" [static]
The
Event.CHANNEL_STATE constant defines the value of the type property of a channelState event object. | Event | ||
CLEAR : String = "clear" [static]
The
Event.CLEAR constant defines the value of the type property
of a clear event object. | Event | ||
CLOSE : String = "close" [static]
The
Event.CLOSE constant defines the value of the type property of a close event object. | Event | ||
CLOSING : String = "closing" [static]
The
Event.CLOSING constant defines the value of the
type property of a closing event object. | Event | ||
COMPLETE : String = "complete" [static]
The
Event.COMPLETE constant defines the value of the type property of a complete event object. | Event | ||
CONNECT : String = "connect" [static]
The
Event.CONNECT constant defines the value of the type property of a connect event object. | Event | ||
CONTEXT3D_CREATE : String = "context3DCreate" [static]
The
Event.CONTEXT3D_CREATE constant defines the value of the type property of a context3Dcreate event object. | Event | ||
COPY : String = "copy" [static]
Defines the value of the
type property of a copy event object. | Event | ||
CUT : String = "cut" [static]
Defines the value of the
type property of a cut event object. | Event | ||
DEACTIVATE : String = "deactivate" [static]
The
Event.DEACTIVATE constant defines the value of the type property of a deactivate event object. | Event | ||
DISPLAYING : String = "displaying" [static]
The
Event.DISPLAYING constant defines the value of the type property of a displaying event object. | Event | ||
ENTER_FRAME : String = "enterFrame" [static]
The
Event.ENTER_FRAME constant defines the value of the type property of an enterFrame event object. | Event | ||
ERROR : String = "error" [static]
Defines the value of the
type property of an error event object. | ErrorEvent | ||
EXIT_FRAME : String = "exitFrame" [static]
The
Event.EXIT_FRAME constant defines the value of the type property of an exitFrame event object. | Event | ||
EXITING : String = "exiting" [static]
The
Event.EXITING constant defines the value of the type property of an exiting event object. | Event | ||
FRAME_CONSTRUCTED : String = "frameConstructed" [static]
The
Event.FRAME_CONSTRUCTED constant defines the value of the type property of an frameConstructed event object. | Event | ||
FRAME_LABEL : String = "frameLabel" [static]
The
Event.FRAME_LABEL constant defines the value of the type property of an frameLabel event object. | Event | ||
FULLSCREEN : String = "fullScreen" [static]
The
Event.FULL_SCREEN constant defines the value of the type property of a fullScreen event object. | Event | ||
HTML_BOUNDS_CHANGE : String = "htmlBoundsChange" [static]
The
Event.HTML_BOUNDS_CHANGE constant defines the value of the type property of an htmlBoundsChange event object. | Event | ||
HTML_DOM_INITIALIZE : String = "htmlDOMInitialize" [static]
The
Event.HTML_DOM_INITIALIZE constant defines the value of the type property
of an htmlDOMInitialize event object. | Event | ||
HTML_RENDER : String = "htmlRender" [static]
The
Event.HTML_RENDER constant defines the value of the type property of an htmlRender event object. | Event | ||
ID3 : String = "id3" [static]
The
Event.ID3 constant defines the value of the type property of an id3 event object. | Event | ||
INIT : String = "init" [static]
The
Event.INIT constant defines the value of the type property of an init event object. | Event | ||
LINK : String = "link" [static]
Defines the value of the
type property of a link event object. | TextEvent | ||
LOCATION_CHANGE : String = "locationChange" [static]
The
Event.LOCATION_CHANGE constant defines the value of the type property of a locationChange event object. | Event | ||
MOUSE_LEAVE : String = "mouseLeave" [static]
The
Event.MOUSE_LEAVE constant defines the value of the type property of a mouseLeave event object. | Event | ||
NETWORK_CHANGE : String = "networkChange" [static]
The
Event.NETWORK_CHANGE constant defines the value of the type property of a networkChange event object. | Event | ||
OPEN : String = "open" [static]
The
Event.OPEN constant defines the value of the type property of an open event object. | Event | ||
PASTE : String = "paste" [static]
The
Event.PASTE constant defines the value of the type property of a paste event object. | Event | ||
PREPARING : String = "preparing" [static]
The
Event.PREPARING constant defines the value of the type property of a preparing event object. | Event | ||
REMOVED : String = "removed" [static]
The
Event.REMOVED constant defines the value of the type property of
a removed event object. | Event | ||
REMOVED_FROM_STAGE : String = "removedFromStage" [static]
The
Event.REMOVED_FROM_STAGE constant defines the value of the type
property of a removedFromStage event object. | Event | ||
RENDER : String = "render" [static]
The
Event.RENDER constant defines the value of the type property of a render event object. | Event | ||
RESIZE : String = "resize" [static]
The
Event.RESIZE constant defines the value of the type property of a resize event object. | Event | ||
SCROLL : String = "scroll" [static]
The
Event.SCROLL constant defines the value of the type property of a scroll event object. | Event | ||
SELECT : String = "select" [static]
The
Event.SELECT constant defines the value of the type property of a select event object. | Event | ||
SELECT_ALL : String = "selectAll" [static]
The
Event.SELECT_ALL constant defines the value of the type property of a selectAll event object. | Event | ||
SOUND_COMPLETE : String = "soundComplete" [static]
The
Event.SOUND_COMPLETE constant defines the value of the type property of a soundComplete event object. | Event | ||
STANDARD_ERROR_CLOSE : String = "standardErrorClose" [static]
The
Event.STANDARD_ERROR_CLOSE constant defines the value of the type property of a standardErrorClose event object. | Event | ||
STANDARD_INPUT_CLOSE : String = "standardInputClose" [static]
The
Event.STANDARD_INPUT_CLOSE constant defines the value of the type property of a standardInputClose event object. | Event | ||
STANDARD_OUTPUT_CLOSE : String = "standardOutputClose" [static]
The
Event.STANDARD_OUTPUT_CLOSE constant defines the value of the type property of a standardOutputClose event object. | Event | ||
SUSPEND : String = "suspend" [static]
The
Event.SUSPEND constant defines the value of the type property of an suspend event object. | Event | ||
TAB_CHILDREN_CHANGE : String = "tabChildrenChange" [static]
The
Event.TAB_CHILDREN_CHANGE constant defines the value of the type property of a tabChildrenChange event object. | Event | ||
TAB_ENABLED_CHANGE : String = "tabEnabledChange" [static]
The
Event.TAB_ENABLED_CHANGE constant defines the value of the type
property of a tabEnabledChange event object. | Event | ||
TAB_INDEX_CHANGE : String = "tabIndexChange" [static]
The
Event.TAB_INDEX_CHANGE constant defines the value of the
type property of a tabIndexChange event object. | Event | ||
TEXT_INPUT : String = "textInput" [static]
Defines the value of the
type property of a textInput event object. | TextEvent | ||
TEXT_INTERACTION_MODE_CHANGE : String = "textInteractionModeChange" [static]
The
Event.TEXT_INTERACTION_MODE_CHANGE constant defines the value of the type property of a interaction mode event object. | Event | ||
TEXTURE_READY : String = "textureReady" [static]
The
Event.TEXTURE_READY constant defines the value of the type property of a textureReady event object. | Event | ||
UNCAUGHT_ERROR : String = "uncaughtError" [static]
Defines the value of the
type property of an uncaughtError event object. | UncaughtErrorEvent | ||
UNLOAD : String = "unload" [static]
The
Event.UNLOAD constant defines the value of the type property of an unload event object. | Event | ||
USER_IDLE : String = "userIdle" [static]
The
Event.USER_IDLE constant defines the value of the type property of a userIdle event object. | Event | ||
USER_PRESENT : String = "userPresent" [static]
The
Event.USER_PRESENT constant defines the value of the type property of a userPresent event object. | Event | ||
VIDEO_FRAME : String = "videoFrame" [static]
The
Event.VIDEO_FRAME constant defines the value of the
type property of a videoFrame event object. | Event | ||
WORKER_STATE : String = "workerState" [static]
The
Event.WORKER_STATE constant defines the value of the type property of a workerState event object. | Event |
error | property |
error:*
[read-only]
Language version: | ActionScript 3.0 |
Runtime version: | AIR 2 |
The error object associated with the uncaught error. Typically, this object's data type is one of the following:
throw
statement, such as an
error that could have been caught using a try..catch
blockHowever, the error
property can potentially be an object of any
data type. ActionScript does not require a throw
statement to be used only with Error objects. For example, the following
code is legal both at compile time and run time:
throw new Sprite()
If that throw
statement is not caught by a
try..catch
block, the throw
statement
triggers an uncaughtError
event. In that case, the
error
property of the UncaughtErrorEvent object that's dispatched
is the Sprite object that's constructed in the throw
statement.
Consequently, in your uncaughtError
listener, you should check
the data type of the error
property. The following example
demonstrates this check:
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(); } }
function uncaughtErrorHandler(event) { var message; // String if (event.error.message) // It's an Error object { message = event.error.message; } else if (event.error.text) // It's an ErrorEvent object { message = event.error.text; } else { message = event.error.toString(); } }
If the error
property contains an Error instance (or Error subclass),
the available error information varies depending on the version of the runtime
in which the content is running, as follows:
In a debugger version of the runtime such as the debugger version of Flash Player or the AIR Debug Launcher (ADL):
Error.getStackTrace()
method returns the
call stack that led to the errorError.message
contains the complete error
message textIn a non-debuger version of the runtime:
Error.getStackTrace()
method returns the
call stack that led to the error. However, the call stack
information doesn't include source file names or line numbers.Error.message
property contains a short
version of the error message, which is oftan a combination
of the Error.errorID
and Error.name
propertiesIn a non-debugger version of the runtime (Flash Player 11.4 or earlier and AIR 1.4 or earlier):
Error.getStackTrace()
method returns
null
Error.message
property contains a short
version of the error message, which is oftan a combination
of the Error.errorID
and Error.name
propertiesAll other properties and methods of the Error class are available in all runtime versions.
Note that if the error
property is an ErrorEvent
instance, call stack information is never available.
public function get error():*
UncaughtErrorEvent | () | constructor |
public function UncaughtErrorEvent(type:String, bubbles:Boolean = true, cancelable:Boolean = true, error_in:* = null)
Language version: | ActionScript 3.0 |
Runtime version: | AIR 2 |
Creates an UncaughtErrorEvent object that contains information about an
uncaughtError
event.
type:String — The type of the event.
|
|
bubbles:Boolean (default = true ) — Determines whether the Event object participates in the bubbling stage of the event flow. Event listeners can access this information through the inherited bubbles property.
|
|
cancelable:Boolean (default = true ) — Determines whether the Event object can be canceled. Event listeners can access this information through the inherited cancelable property.
|
|
error_in:* (default = null ) — The object associated with the error that was not caught or handled (an Error or ErrorEvent object under normal circumstances).
|
clone | () | method |
public override function clone():Event
Language version: | ActionScript 3.0 |
Runtime version: | AIR 2 |
Creates a copy of the UncaughtErrorEvent object and sets the value of each property to match that of the original.
ReturnsEvent —
A new UncaughtErrorEvent object with property values that match those
of the original.
|
toString | () | method |
public override function toString():String
Language version: | ActionScript 3.0 |
Runtime version: | AIR 2 |
Returns a string that contains all the properties of the UncaughtErrorEvent object.
ReturnsString —
A string that contains all the properties of the UncaughtErrorEvent object.
|
UNCAUGHT_ERROR | constant |
public static const UNCAUGHT_ERROR:String = "uncaughtError"
Language version: | ActionScript 3.0 |
Runtime version: | AIR 2 |
Defines the value of the type
property of an uncaughtError
event object.
Note: If in a try block, there is an event dispatcher that calls its event handler,
the catch block doesn't catch the error if thrown in event handler. Any error thrown
thereafter can be caught by listening to LoaderInfo.uncaughtErrorEvents
.
This event has the following properties:
Property | Value |
---|---|
bubbles | true |
cancelable | true ; cancelling the event prevents the uncaught error dialog from appearing in debugger runtime versions |
currentTarget | The object that is actively processing the Event object with an event listener. |
error | The uncaught error. |
target | The LoaderInfo object associated with the SWF where the error happened. |
text | Text error message. |
uncaughtError
event handler to detect uncaught errors. It also
provides a button that, when clicked, throws an error that is caught by the
uncaught error handler.
In the constructor, the code registers a listener for the uncaughtError
event dispatched by the LoaderInfo object's uncaughtErrorEvents
property.
In the uncaughtErrorHandler()
method, the code checks the data type of
the error
property and responds accordingly.
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
event handler to detect uncaught errors.
In the constructor, the code creates a Loader object and registers a listener for
the uncaughtError
event dispatched by the Loader object's
uncaughtErrorEvents
property.
In the uncaughtErrorHandler()
method, the code checks the data type of
the error
property and responds accordingly.
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 } } } }