flex全域性異常
從Flash Player 10.1 和Adobe AIR 2.0 開始,開發人員就能夠全域性地捕獲未處理異常和錯誤。然而,我們儘量在異常發生時來做處理。全域性處理應該只用於您確實無法用其他方法控制的非同步異常,或者未經本地捕獲的診斷和日誌異常。
全域性異常一個核心類就是UncaughtErrorEvent.UNCAUGHT_ERROR,LoaderInfo物件可以監聽該事件,Application當然也可以監聽該事件了。
下面是UncaughtErrorEvent的API的介紹
以下程式碼是我寫的一個記錄全域性未捕獲異常的程式碼,僅供參考:
package org.sdp.context
{
import flash.display.LoaderInfo;
import flash.events.ErrorEvent;
import flash.events.UncaughtErrorEvent;
import org.sdp.logging.logger.ILogger;
import org.sdp.logging.manager.LogManager;
/**
*
* desc:捕獲未catch的異常資訊
*
* @author hanjn
* @version 1.0.0
* @date 2011-8-21
*/
public class GlobalErrorHandler
{
private static var globalErrorHandler:GlobalErrorHandler=null;
private static var log:ILogger=LogManager.registerLog("org.sdp.context.GlobalErrorHandler");
/**
* 得到GlobalErrorHandler例項
* @return GlobalErrorHandler一個例項
*
*/
public static function getInstance():GlobalErrorHandler {
if(globalErrorHandler==null){
globalErrorHandler=new GlobalErrorHandler();
}
return globalErrorHandler;
}
/**
* 對一個LoaderInfo新增Uncaught事件
* @param loaderInfo
*
*/
public function addUncaughtEvent(loaderInfo:LoaderInfo):void{
loaderInfo.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR,uncaughtErrorHandler);
}
/**
*處理caught事件
* @param event
*
*/
private function uncaughtErrorHandler(event:UncaughtErrorEvent):void{
if (event.error is Error)
{
var error:Error = event.error as Error;
log.error("errorId={0} message={1}\n stack={2}",error.errorID,error.message,error.getStackTrace());
}
else if (event.error is ErrorEvent)
{
var errorEvent:ErrorEvent = event.error as ErrorEvent;
// do something with the error
log.error("errorId={0} message={1}\n stack={2}",[error.errorID,error.message,error.getStackTrace()]);
}
else
{
// a non-Error, non-ErrorEvent type was thrown and uncaught
log.error("Uncaught Error!");
}
}
}
}
使用方法很簡單:
GlobalErrorHandler.getInstance().addUncaughtEvent(application.loaderInfo);
注意一點上上面的程式碼只針對Application有效,對ModuleLoader裡面載入的module就無效了餓,看了一片文章後,通過下面的程式碼可以監聽Module的異常事件
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
layout="vertical"
initialize="init()">
<fx:Script>
<![CDATA[
import mx.events.ModuleEvent;
private function init():void
{
systemManager.loaderInfo.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR,
uncaughtErrorHandler);
}
private function uncaughtErrorHandler(event:UncaughtErrorEvent):void
{
trace("caught uncaught error");
event.preventDefault();
}
]]>
</fx:Script>
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<mx:ModuleLoader id="moduleLoader" url="GEHFlexModule.swf" width="200" height="150" />
</mx:Application>
相關文章
- wpf 捕獲全域性異常
- spring 全域性異常處理Spring
- springboot 全域性異常攔截器,友好異常提示Spring Boot
- springboot全域性異常處理Spring Boot
- Spring-全域性異常攔截Spring
- .netcore全域性異常處理NetCore
- ASP.NET 全域性異常處理ASP.NET
- SpringBoot之全域性捕獲異常Spring Boot
- SpringBoot之全域性異常處理Spring Boot
- Android 全域性異常捕獲之CrashHandlerAndroid
- NETCORE - 全域性異常處理(Exception)NetCoreException
- dotNet8 全域性異常處理
- 設計一個全域性異常處理器
- SpringBoot處理全域性統一異常Spring Boot
- Spring Cloud Gateway的全域性異常處理SpringCloudGateway
- SpringBoot中的全域性異常處理Spring Boot
- 簡單的全域性異常統一處理
- springboot下新增全域性異常處理和自定義異常處理Spring Boot
- .NetCore——全域性異常過濾器ExceptionFilterAttributeNetCore過濾器ExceptionFilter
- SpringBoot優雅的全域性異常處理Spring Boot
- Spring Boot 2 Webflux的全域性異常處理Spring BootWebUX
- Vue3 如何實現全域性異常處理?Vue
- Django筆記三十一之全域性異常處理Django筆記
- spring-boot-route(四)全域性異常處理Springboot
- Android-AsyncTask及UncaughtExceptionHandler捕獲全域性性異常(ANR、FC)AndroidException
- springboot 配置錯誤頁面及全域性異常Spring Boot
- (系列六).net8 全域性異常捕獲機制
- 【SpringBoot】全域性異常處理@ControllerAdviceSpring BootController
- Feign失敗重試與全域性異常捕獲
- SpringBoot進行優雅的全域性異常處理Spring Boot
- dingo + jwt 搭建後 handler 全域性接收異常的問題GoJWT
- 如何自定義一個全域性異常捕獲器-SpiderManIDE
- gRPC伺服器中新增全域性異常攔截器RPC伺服器
- dubbo~全域性異常攔截器的使用與設計缺陷
- 聊聊springboot專案全域性異常處理那些事兒Spring Boot
- 關於shiroFilter的全域性異常統一處理解決方案Filter
- @ControllerAdvice 全域性異常響應頁面和 JSONControllerJSON
- dubbo~全域性異常攔截器的使用與設計缺陷~續