| Pacote | flash.events |
| Classe | public class UncaughtErrorEvent |
| Herança | UncaughtErrorEvent ErrorEvent TextEvent Event Object |
| Versão da linguagem: | ActionScript 3.0 |
| Versões de runtime: | Flash Player 10.1, AIR 2 |
try..catch ou quando um objeto ErrorEvent é despachado sem ouvintes registrados. A funcionalidade de evento de erro não detectado muitas vezes é descrita como "controlador de erro global".
O objeto UncaughtErrorEvents que despacha o evento é associado a um objeto LoaderInfo ou a um objeto Loader. Use as seguintes propriedades para acessar uma instância UncaughtErrorEvents:
-
LoaderInfo.uncaughtErrorEvents: para detectar erros não detectados no código definido no mesmo SWF. -
Loader.uncaughtErrorEvents: para descobrir erros não detectados no código definido no SWF carregado por um objeto Carregador.
Quando um evento uncaughtError acontece, mesmo se o evento for controlado, a execução não continua na pilha de chamadas que causou o erro. Se o erro for um erro síncrono, nenhum código que permanecer na função em que o erro aconteceu será realizado. Consequentemente, é provável que quando um evento de erro não detectado ocorre, o seu aplicativo esteja em um estado instável. Uma vez que pode haver muitas causas para um erro não detectado, é impossível predizer qual funcionalidade está disponível. Por exemplo, o seu aplicativo pode ser capaz de realizar operações de rede ou operações de arquivo. Contudo, essas operações não estão necessariamente disponíveis.
Quando um SWF carrega o outro, os eventos uncaughtError sobem e descem novamente pela hierarquia LoaderInfo. Por exemplo, suponha que A.swf carrega B.swf utilizando uma instância Loader. Se um erro não detectado ocorrer em B.swf, um evento uncaughtError é despachado a objetos Loader e LoaderInfo na seguinte sequência:
- (Fase de captura) LoaderInfo de A.swf
- (Fase de captura) Loader em A.swf
- (Fase de destino) LoaderInfo de B.swf
- (Fase de balão) Loader em A.swf
- (Fase de balão) LoaderInfo de A.swf
Uma propriedade uncaughtErrorEvents do objeto Loader a nunca despacha um uncaughtErrorEvent na fase de destino. Ele só despacha o evento nas fases de captura e bubbling.
Como outro evento sobe ou desce, chamar stopPropagation() ou stopImmediatePropagation() para o evento de ser despachado para qualquer outro ouvinte, com uma diferença importante. Um objeto UncaughtErrorEvents do objeto Loader é tratado como um par do objeto LoaderInfo.uncaughtErrorEvents do SWF carregado para fins de propagação de evento. Se um ouvinte registrado com um daqueles objetos chamar o método stopPropagation(), os eventos ainda serão despachados a outros ouvintes registrados com esse objeto UncaughtErrorEvents e a ouvintes registrados com o seu objeto de parceiro UncaughtErrorEvents antes que a propagação termine. O método stopImmediatePropagation() ainda evita que eventos sejam despachados a todos os ouvintes adicionais.
Quando o conteúdo é executado em uma versão de depurador do tempo de execução, como a versão de depurador do Flash Player ou o AIR Debug Launcher (ADL), uma caixa de diálogo de erro não detectado é exibida quando um erro não detectado ocorrer. Para essas versões do tempo de execução, a caixa de diálogo de erro aparece mesmo quando um ouvinte é registrado para o evento uncaughtError. Para evitar que a caixa de diálogoapareça nessa situação, chame o método preventDefault() do objeto UncaughtErrorEvent.
Se o conteúdo carregado por um objeto Loader for um arquivo AVM1 (ActionScript 2) SWF, os erros não detectados no arquivo AVM1 SWF não resultarão em um evento uncaughtError. Além disto, os erros de JavaScript em conteúdo de HTML carregado em um objeto HTMLLoader (inclusive um controle Flex HTML) não resultam em um evento uncaughtError.
Elementos da API relacionados
| Propriedade | Definido por | ||
|---|---|---|---|
![]() | bubbles : Boolean [somente leitura]
Indica se um evento é do tipo bubbling. | Event | |
![]() | cancelable : Boolean [somente leitura]
Indica se o comportamento associado ao evento pode ser impedido. | Event | |
![]() | constructor : Object
Uma referência ao objeto de classe ou à função de construtor de uma determinada ocorrência de objeto. | Object | |
![]() | currentTarget : Object [somente leitura]
O objeto que está processando ativamente o objeto Event com um ouvinte de evento. | Event | |
| error : * [somente leitura]
O objeto de erro associado ao erro não detectado. | UncaughtErrorEvent | ||
![]() | errorID : int [somente leitura]
Contém o número de referência associado ao erro específico. | ErrorEvent | |
![]() | eventPhase : uint [somente leitura]
A fase atual no fluxo de eventos. | Event | |
![]() | target : Object [somente leitura]
O destino de evento. | Event | |
![]() | text : String
Para um evento textInput, o caractere ou string inserida pelo usuário. | TextEvent | |
![]() | type : String [somente leitura]
O tipo de evento. | Event | |
| Método | Definido por | ||
|---|---|---|---|
UncaughtErrorEvent(type:String, bubbles:Boolean = true, cancelable:Boolean = true, error_in:* = null)
Cria um objeto de UncaughtErrorEvent que contém informações sobre um evento uncaughtError. | UncaughtErrorEvent | ||
[substituir]
Cria uma cópia do objeto UncaughtErrorEvent e define o valor de cada propriedade para corresponder ao do original. | UncaughtErrorEvent | ||
![]() |
Uma função de utilitário para implementar o método toString() em classes ActionScript 3.0 Event personalizadas. | Event | |
![]() |
Indica se um objeto tem uma propriedade especificada definida. | Object | |
![]() |
Verifica se o método preventDefault() foi chamado no evento. | Event | |
![]() |
Indica se uma ocorrência da classe Object está na cadeia de protótipos do objeto especificado como o parâmetro. | Object | |
![]() |
Cancela um comportamento padrão de evento se esse comportamento puder ser cancelado. | Event | |
![]() |
Indica se a propriedade especificada existe e é enumerável. | Object | |
![]() |
Define a disponibilidade de uma propriedade dinâmica para operações de repetição. | Object | |
![]() |
Impede o processamento de qualquer ouvinte de evento no nó atual e qualquer nó subsequente no fluxo de eventos. | Event | |
![]() |
Impede o processamento de algum ouvinte de evento em nós subsequentes ao nó atual no fluxo de eventos. | Event | |
![]() |
Retorna a representação da string deste objeto, formatado segundo as convenções específicas para a localidade. | Object | |
[substituir]
Retorna uma string que contém todas as propriedades do objeto UncaughtErrorEvent. | UncaughtErrorEvent | ||
![]() |
Retorna o valor primitivo do objeto especificado. | Object | |
| Constante | Definido por | ||
|---|---|---|---|
| UNCAUGHT_ERROR : String = "uncaughtError" [estático]
Define o valor da propriedade type de um objeto de evento uncaughtError. | UncaughtErrorEvent | ||
error | propriedade |
error:* [somente leitura] | Versão da linguagem: | ActionScript 3.0 |
| Versões de runtime: | Flash Player 10.1, AIR 2 |
O objeto de erro associado ao erro não detectado. Normalmente, o tipo de dados deste objeto é um dos seguinte:
- Uma instância de erro (ou uma das suas subclasses), se o erro não detectado for um erro síncrono criado pela instrução
throw, como um erro que pode ter sido detectado usandotry..catch - Uma instância ErrorEvent (ou uma das suas subclasses), se o erro não detectado for um erro assíncrono que despacha um evento de erro quando o erro ocorre
Contudo, a propriedade error pode ser potencialmente um objeto de qualquer tipo de dados. ActionScript não precisa que a instrução throw seja usada só com objetos Error. Por exemplo, o seguinte código é válido tanto no tempo de compilação como no tempo de execução:
throw new Sprite()
Se essa instrução throw não for detectada pelo bloqueio try..catch, a instrução throw provoca um evento uncaughtError. Neste caso, a propriedade error do objeto UncaughtErrorEvent que é despachado é o objeto Sprite que é construído na instrução throw.
Consequentemente, no seu ouvinte uncaughtError, você deve verificar o tipo de dados da propriedade error. O exemplo abaixo demonstra esta verificação:
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();
}
}Se a propriedade error contém uma instância Error (ou subclasse de Error), as informações sobre o erro disponíveis variam dependendo da versão do runtime no qual o conteúdo está sendo executado, conforme a seguir:
Em uma versão de depuração do runtime, como a versão de depuração do Flash Player ou o AIR Debug Launcher (ADL):
- O método
Error.getStackTrace()retorna a pilha de chamada que levou ao erro Error.messagecontém o texto completo da mensagem de texto
- O método
Em uma versão de não depuração do runtime:
- O método
Error.getStackTrace()retorna a pilha de chamada que levou ao erro. No entanto, as informações de pilha de chamada não incluem os nomes dos arquivos de origem ou números de linha. - A propriedade
Error.messagecontém uma versão curta da mensagem de erro, que normalmente é uma combinação das propriedadesError.errorIDeError.name
- O método
Em uma versão de não depuração do runtime (Flash Player 11.4 ou anterior e AIR 1.4 ou anterior):
- O método
Error.getStackTrace()retornanull - A propriedade
Error.messagecontém uma versão curta da mensagem de erro, que normalmente é uma combinação das propriedadesError.errorIDeError.name
- O método
Todas outras propriedades e métodos da classe Erro estão disponíveis em todas as versões do tempo de execução.
Observe que, se a propriedade error é uma instância ErrorEvent, as informações de pilha de chamada nunca estarão disponíveis.
Implementação
public function get error():*UncaughtErrorEvent | () | Construtor |
public function UncaughtErrorEvent(type:String, bubbles:Boolean = true, cancelable:Boolean = true, error_in:* = null)| Versão da linguagem: | ActionScript 3.0 |
| Versões de runtime: | Flash Player 10.1, AIR 2 |
Cria um objeto UncaughtErrorEvent que contém informações sobre um evento uncaughtError.
type:String (default = NaN) — O tipo de evento.
| |
bubbles:Boolean (default = true) — Determina se o objeto Event participa do estágio de bubbling do fluxo de eventos. Ouvintes de eventos podem acessar essas informações por meio da propriedade bubbles herdada.
| |
cancelable:Boolean (default = true) — Determina se o objeto Event pode ser cancelado. Ouvintes de eventos podem acessar essas informações por meio da propriedade cancelable herdada.
| |
error_in:* (default = null) — O objeto associado ao erro que não foi detectado ou controlado (um objeto ErrorEvent ou Error em circunstâncias normais).
|
clone | () | método |
override public function clone():Event| Versão da linguagem: | ActionScript 3.0 |
| Versões de runtime: | Flash Player 10.1, AIR 2 |
Cria uma cópia do objeto UncaughtErrorEvent e define o valor de cada propriedade para corresponder ao do original.
RetornaEvent — Um novo objeto UncaughtErrorEvent com valores de propriedade que correspondem aos do original.
|
toString | () | método |
UNCAUGHT_ERROR | Constante |
public static const UNCAUGHT_ERROR:String = "uncaughtError"| Versão da linguagem: | ActionScript 3.0 |
| Versões de runtime: | Flash Player 10.1, AIR 2 |
Define o valor da propriedade type de um objeto de evento uncaughtError.
Observação: se, em um bloco try, há um distribuidor de eventos que chama o manipulador de eventos, o bloco catch não identifica o erro caso seja inserido no manipulador de eventos. Qualquer erro inserido depois disso poderá ser identificado em LoaderInfo.uncaughtErrorEvents.
Esse evento tem as seguintes propriedades:
| Propriedade | Valor |
|---|---|
bubbles | true |
cancelable | true; o cancelamento do evento evita que a caixa de diálogo de erro não detectadoapareça em versões do tempo de execução de depurador |
currentTarget | O objeto que está processando ativamente o objeto Event com um ouvinte de evento. |
error | O erro não detectado. |
target | O objeto LoaderInfo associado ao SWF em que o erro aconteceu. |
text | Mensagem de erro de texto. |
uncaughtError para detectar erros não capturados. Ele também oferece um botão que, quando clicado, lança um erro que é detectado pelo controlador de erros não detectados.
No construtor, o código registra um ouvinte para o evento uncaughtError despachado pela propriedade uncaughtErrorEvents do objeto LoaderInfo.
No método uncaughtErrorHandler(), o código verifica o tipo de dados da propriedade error e responde de acordo.
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 para detectar erros não capturados.
No construtor, o código cria um objeto Carregador e registra um ouvinte para o evento uncaughtError despachado pela propriedade uncaughtErrorEvents do objeto de Carregador.
No método uncaughtErrorHandler(), o código verifica o tipo de dados da propriedade error e responde de acordo.
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:10 AM Z
Ocultar propriedades públicas herdadas
Mostrar propriedades públicas herdadas