首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > flex >

flex全局错误

2012-09-02 
flex全局异常????? 从Flash Player 10.1 和Adobe AIR 2.0 开始,开发人员就能够全局地捕获未处理异常和错误

flex全局异常

????? 从Flash Player 10.1 和Adobe AIR 2.0 开始,开发人员就能够全局地捕获未处理异常和错误。然而,我们尽量在异常发生时来做处理。全局处理应该只用于您确实无法用其他方法控制的异步异常,或者未经本地捕获的诊断和日志异常。

???? 全局异常一个核心类就是UncaughtErrorEvent.UNCAUGHT_ERROR,LoaderInfo对象可以监听该事件,Application当然也可以监听该事件了。

???下面是UncaughtErrorEvent的API的介绍

??? flex全局错误

?

?

?? 以下代码是我写的一个记录全局未捕获异常的代码,仅供参考:

?

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 errorlog.error("errorId={0}  message={1}\n  stack={2}",[error.errorID,error.message,error.getStackTrace()]);}else{// a non-Error, non-ErrorEvent type was thrown and uncaughtlog.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>

?

?????

热点排行