Adobe® Flex® 4 Language Reference
Show Packages and Classes List |  Packages  |  Classes  |  Index  |  Appendixes
flash.events 
UncaughtErrorEvent 
Packageflash.events
Classpublic class UncaughtErrorEvent
InheritanceUncaughtErrorEvent Inheritance ErrorEvent Inheritance TextEvent Inheritance Event Inheritance Object

Language Version: ActionScript 3.0
Runtime Versions: Flash Player 10.1, AIR 2

An UncaughtErrorEvent object is dispatched by an instance of the UncaughtErrorEvents class when an uncaught error occurs. An uncaught error happens when an error is thrown outside of any 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:

  1. (Capture phase) A.swf's LoaderInfo
  2. (Capture phase) Loader in A.swf
  3. (Target phase) B.swf's LoaderInfo
  4. (Bubble phase) Loader in A.swf
  5. (Bubble phase) A.swf's LoaderInfo

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.

View the examples

See also



Public Properties
 PropertyDefined By
 Inheritedbubbles : Boolean
[read-only] Indicates whether an event is a bubbling event.
Event
 Inheritedcancelable : Boolean
[read-only] Indicates whether the behavior associated with the event can be prevented.
Event
 Inheritedconstructor : Object
A reference to the class object or constructor function for a given object instance.
Object
 InheritedcurrentTarget : Object
[read-only] 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
 InheritederrorID : int
[read-only] Contains the reference number associated with the specific error.
ErrorEvent
 InheritedeventPhase : uint
[read-only] The current phase in the event flow.
Event
 Inheritedprototype : Object
[static] A reference to the prototype object of a class or function object.
Object
 Inheritedtarget : Object
[read-only] The event target.
Event
 Inheritedtext : String
For a textInput event, the character or sequence of characters entered by the user.
TextEvent
 Inheritedtype : String
[read-only] The type of event.
Event
Public Methods
 MethodDefined 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
  
[override] Creates a copy of the UncaughtErrorEvent object and sets the value of each property to match that of the original.
UncaughtErrorEvent
 Inherited
formatToString(className:String, ... arguments):String
A utility function for implementing the toString() method in custom ActionScript 3.0 Event classes.
Event
 Inherited
Indicates whether an object has a specified property defined.
Object
 Inherited
Checks whether the preventDefault() method has been called on the event.
Event
 Inherited
Indicates whether an instance of the Object class is in the prototype chain of the object specified as the parameter.
Object
 Inherited
Cancels an event's default behavior if that behavior can be canceled.
Event
 Inherited
Indicates whether the specified property exists and is enumerable.
Object
 Inherited
Sets the availability of a dynamic property for loop operations.
Object
 Inherited
Prevents processing of any event listeners in the current node and any subsequent nodes in the event flow.
Event
 Inherited
Prevents processing of any event listeners in nodes subsequent to the current node in the event flow.
Event
 Inherited
Returns the string representation of this object, formatted according to locale-specific conventions.
Object
  
[override] Returns a string that contains all the properties of the UncaughtErrorEvent object.
UncaughtErrorEvent
 Inherited
Returns the primitive value of the specified object.
Object
Public Constants
 ConstantDefined By
 InheritedACTIVATE : String = "activate"
[static] The ACTIVATE constant defines the value of the type property of an activate event object.
Event
 InheritedADDED : String = "added"
[static] The Event.ADDED constant defines the value of the type property of an added event object.
Event
 InheritedADDED_TO_STAGE : String = "addedToStage"
[static] The Event.ADDED_TO_STAGE constant defines the value of the type property of an addedToStage event object.
Event
 InheritedCANCEL : String = "cancel"
[static] The Event.CANCEL constant defines the value of the type property of a cancel event object.
Event
 InheritedCHANGE : String = "change"
[static] The Event.CHANGE constant defines the value of the type property of a change event object.
Event
 InheritedCLEAR : String = "clear"
[static] The Event.CLEAR constant efines the value of the type property of a clear event object.
Event
 InheritedCLOSE : String = "close"
[static] The Event.CLOSE constant defines the value of the type property of a close event object.
Event
 InheritedAIR-only CLOSING : String = "closing"
[static] The Event.CLOSING constant defines the value of the type property of a closing event object.
Event
 InheritedCOMPLETE : String = "complete"
[static] The Event.COMPLETE constant defines the value of the type property of a complete event object.
Event
 InheritedCONNECT : String = "connect"
[static] The Event.CONNECT constant defines the value of the type property of a connect event object.
Event
 InheritedCOPY : String = "copy"
[static] Defines the value of the type property of a copy event object.
Event
 InheritedCUT : String = "cut"
[static] Defines the value of the type property of a cut event object.
Event
 InheritedDEACTIVATE : String = "deactivate"
[static] The Event.DEACTIVATE constant defines the value of the type property of a deactivate event object.
Event
 InheritedAIR-only DISPLAYING : String = "displaying"
[static] The Event.DISPLAYING constant defines the value of the type property of a displaying event object.
Event
 InheritedENTER_FRAME : String = "enterFrame"
[static] The Event.ENTER_FRAME constant defines the value of the type property of an enterFrame event object.
Event
 InheritedERROR : String = "error"
[static] Defines the value of the type property of an error event object.
ErrorEvent
 InheritedEXIT_FRAME : String = "exitFrame"
[static] The Event.EXIT_FRAME constant defines the value of the type property of an exitFrame event object.
Event
 InheritedAIR-only EXITING : String = "exiting"
[static] The Event.EXITING constant defines the value of the type property of an exiting event object.
Event
 InheritedFRAME_CONSTRUCTED : String = "frameConstructed"
[static] The Event.FRAME_CONSTRUCTED constant defines the value of the type property of an frameConstructed event object.
Event
 InheritedFULLSCREEN : String = "fullScreen"
[static] The Event.FULL_SCREEN constant defines the value of the type property of a fullScreen event object.
Event
 InheritedAIR-only 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
 InheritedAIR-only 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
 InheritedAIR-only HTML_RENDER : String = "htmlRender"
[static] The Event.HTML_RENDER constant defines the value of the type property of an htmlRender event object.
Event
 InheritedID3 : String = "id3"
[static] The Event.ID3 constant defines the value of the type property of an id3 event object.
Event
 InheritedINIT : String = "init"
[static] The Event.INIT constant defines the value of the type property of an init event object.
Event
 InheritedLINK : String = "link"
[static] Defines the value of the type property of a link event object.
TextEvent
 InheritedAIR-only LOCATION_CHANGE : String = "locationChange"
[static] The Event.LOCATION_CHANGE constant defines the value of the type property of a locationChange event object.
Event
 InheritedMOUSE_LEAVE : String = "mouseLeave"
[static] The Event.MOUSE_LEAVE constant defines the value of the type property of a mouseLeave event object.
Event
 InheritedAIR-only NETWORK_CHANGE : String = "networkChange"
[static] The Event.NETWORK_CHANGE constant defines the value of the type property of a networkChange event object.
Event
 InheritedOPEN : String = "open"
[static] The Event.OPEN constant defines the value of the type property of an open event object.
Event
 InheritedPASTE : String = "paste"
[static] The Event.PASTE constant defines the value of the type property of a paste event object.
Event
 InheritedREMOVED : String = "removed"
[static] The Event.REMOVED constant defines the value of the type property of a removed event object.
Event
 InheritedREMOVED_FROM_STAGE : String = "removedFromStage"
[static] The Event.REMOVED_FROM_STAGE constant defines the value of the type property of a removedFromStage event object.
Event
 InheritedRENDER : String = "render"
[static] The Event.RENDER constant defines the value of the type property of a render event object.
Event
 InheritedRESIZE : String = "resize"
[static] The Event.RESIZE constant defines the value of the type property of a resize event object.
Event
 InheritedSCROLL : String = "scroll"
[static] The Event.SCROLL constant defines the value of the type property of a scroll event object.
Event
 InheritedSELECT : String = "select"
[static] The Event.SELECT constant defines the value of the type property of a select event object.
Event
 InheritedSELECT_ALL : String = "selectAll"
[static] The Event.SELECT_ALL constant defines the value of the type property of a selectAll event object.
Event
 InheritedSOUND_COMPLETE : String = "soundComplete"
[static] The Event.SOUND_COMPLETE constant defines the value of the type property of a soundComplete event object.
Event
 InheritedAIR-only 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
 InheritedAIR-only 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
 InheritedAIR-only 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
 InheritedTAB_CHILDREN_CHANGE : String = "tabChildrenChange"
[static] The Event.TAB_CHILDREN_CHANGE constant defines the value of the type property of a tabChildrenChange event object.
Event
 InheritedTAB_ENABLED_CHANGE : String = "tabEnabledChange"
[static] The Event.TAB_ENABLED_CHANGE constant defines the value of the type property of a tabEnabledChange event object.
Event
 InheritedTAB_INDEX_CHANGE : String = "tabIndexChange"
[static] The Event.TAB_INDEX_CHANGE constant defines the value of the type property of a tabIndexChange event object.
Event
 InheritedTEXT_INPUT : String = "textInput"
[static] Defines the value of the type property of a textInput event object.
TextEvent
  UNCAUGHT_ERROR : String = "uncaughtError"
[static] Defines the value of the type property of an uncaughtError event object.
UncaughtErrorEvent
 InheritedUNLOAD : String = "unload"
[static] The Event.UNLOAD constant defines the value of the type property of an unload event object.
Event
 InheritedAIR-only USER_IDLE : String = "userIdle"
[static] The Event.USER_IDLE constant defines the value of the type property of a userIdle event object.
Event
 InheritedAIR-only USER_PRESENT : String = "userPresent"
[static] The Event.USER_PRESENT constant defines the value of the type property of a userPresent event object.
Event
Property Detail

error

property
error:*  [read-only]

Language Version: ActionScript 3.0
Runtime Versions: Flash Player 10.1, AIR 2

The error object associated with the uncaught error. Typically, this object's data type is one of the following:

  • An Error instance (or one of its subclasses), if the uncaught error is a synchronous error created by a throw statement, such as an error that could have been caught using a try..catch block
  • An ErrorEvent instance (or one of its subclasses), if the uncaught error is an asynchronous error that dispatches an error event when the error happens

However, 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();
             }
         }

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. The following functionality is only available 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):

  • Error.getStackTrace() to get the call stack that led to the error. In non-debugger runtime versions, this method returns null. Note that call stack information is never available when the error property is an ErrorEvent instance.
  • Complete Error.message text. In non-debugger runtime versions, this property contains a short version of the error message, which is often a combination of the Error.errorID and Error.name properties.

All other properties and methods of the Error class are available in all runtime versions.



Implementation
    public function get error():*
Constructor Detail

UncaughtErrorEvent

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

Language Version: ActionScript 3.0
Runtime Versions: Flash Player 10.1, AIR 2

Creates an UncaughtErrorEvent object that contains information about an uncaughtError event.

Parameters
type:String (default = NaN) — 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).
Method Detail

clone

()method
override public function clone():Event

Language Version: ActionScript 3.0
Runtime Versions: Flash Player 10.1, AIR 2

Creates a copy of the UncaughtErrorEvent object and sets the value of each property to match that of the original.

Returns
Event — A new UncaughtErrorEvent object with property values that match those of the original.

toString

()method 
override public function toString():String

Language Version: ActionScript 3.0
Runtime Versions: Flash Player 10.1, AIR 2

Returns a string that contains all the properties of the UncaughtErrorEvent object.

Returns
String — A string that contains all the properties of the UncaughtErrorEvent object.
Constant Detail

UNCAUGHT_ERROR

Constant
public static const UNCAUGHT_ERROR:String = "uncaughtError"

Language Version: ActionScript 3.0
Runtime Versions: Flash Player 10.1, AIR 2

Defines the value of the type property of an uncaughtError event object.

This event has the following properties:

PropertyValue
bubblestrue
cancelabletrue; cancelling the event prevents the uncaught error dialog from appearing in debugger runtime versions
currentTargetThe object that is actively processing the Event object with an event listener.
errorThe uncaught error.
targetThe LoaderInfo object associated with the SWF where the error happened.
textText error message.

UncaughtErrorEventExample.1.as

The following example demonstrates the use of an uncaught error event handler to detect uncaught errors in an ActionScript project. The example defines an 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!");
        }
    }
}
UncaughtErrorEventExample.1.5.as

The following example is the Flex equivalent of the previous example, using an MXML document instead of an ActionScript class as the root content.
<?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

The following example demonstrates the use of an uncaught error event handler to detect uncaught errors in a loaded SWF. The example defines an 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
            }
        }
    }
}