`
yunzhongxia
  • 浏览: 649504 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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>

 

     

  • 大小: 157.1 KB
0
8
分享到:
评论

相关推荐

    flex 面试题flex

    AS2(ActionScript 2.0)与AS3(ActionScript 3.0)是两种不同的编程语言,AS3运行在AVM2虚拟机上,比AS2快,支持异常处理和强类型。AS3是面向对象的,而AS2则不是。 2. Flex开发框架及优缺点: - Cairngorm:...

    Flex面试题.pdf

    AS2基于AVM1,是非面向对象的,而AS3基于AVM2,是强类型的面向对象编程语言,具有更快的执行速度和异常处理机制。AS3提供了更好的类型检查和错误预防,增强了性能和稳定性。 2. Flex开发框架: - Cairngorm:...

    Flex 应用内存泄露的分析与诊断

    然而,垃圾收集器并非实时运行,而是仅在必要时(如申请新内存或发生异常时)执行,这可能导致内存无法即时回收。 内存泄露在 Flex 中常常由以下两种情况引起: 1. 显示引用:这是开发者明确创建的从一个对象到另...

    flex 单点登录,前端后端源码 jar包

    5. 异常处理:错误和异常的捕获及反馈机制,确保系统稳定性。 jar包通常包含了编译后的类文件和依赖库,它们是Java应用程序运行所必需的。在本例中,jar包可能包含了Flex与Java后端通信所需的库,如BlazeDS或LCDS,...

    Adobe Flex 编码规范

    - 尽可能减少全局变量的使用,以降低副作用和耦合度。 - 使用接口定义交互方式,提高代码的灵活性和可扩展性。 4. **ActionScript语法**: - 遵循AS3的语法规则,例如正确使用访问修饰符(public, private, ...

    flex PMD - flex代码检查

    6. `flex-pmd-ruleset-1.2.jar`:包含了针对Flex编程的特定检查规则,比如变量命名规范、避免使用全局变量等。 7. `plexus-utils-1.0.2.jar`:Maven Plexus框架的工具库,可能用于提供依赖管理和组件生命周期管理。...

    flex与 struts2与 hibernate与spring集成实例项目

    5. **错误和异常处理**:配置全局的异常处理,确保任何错误都能得到妥善处理,并向客户端返回合适的反馈信息。 在实际项目开发中,这样的集成不仅提高了开发效率,也使系统的架构更加清晰,职责划分明确,便于维护...

    flex builder 3 plugin part5

    4. 异常处理:添加适当的异常捕获和处理机制,防止程序因未预期的错误而崩溃。 四、持续学习与更新 由于Flex Builder 3已经较为陈旧,Adobe后续推出了Flash Builder作为其替代品。尽管如此,许多基础概念和技术...

    Flex面试题文.pdf

    要更改新建MXML页面的默认背景颜色,可以在Flex项目的皮肤配置文件(通常是theme.css或类似文件)中,定义全局背景颜色。例如,设置`mx|Application{background-color: #your_color;}`。 总结来说,Flex面试题涉及...

    Flex组件MecGridWizard实例代码

    10. **错误处理**:在开发过程中,正确处理可能出现的错误和异常是非常重要的。MecGridWizard的错误处理机制可以帮助开发者调试和修复问题。 以上是Flex组件MecGridWizard的一些核心知识点,具体实现和用法可能根据...

    Flex学习笔记,入门材料

    - **命名空间**:用于标识元素所属的空间,避免全局命名冲突,特别是在XML文档中。 ##### 1.3 接口(Interface) 接口定义了一组方法的签名,不包含任何实现细节,用于规定类的行为规范。 - **定义接口**:`...

    Flex 的编码规范

    - 尽可能使用局部变量而不是全局变量,减少作用域查找的时间。 7. **MXML和ActionScript的结合**: - MXML用于声明组件结构,ActionScript用于实现业务逻辑和数据绑定。 - 遵循MXML的最佳实践,如使用`&lt;s:Label&gt;...

    Flex 常见 编码规范

    - 全局变量以类型缩写开头,如`intCount`, `numCount`, `strName`,布尔变量以`is`开头。 - 临时变量通常使用单个字母,如`i`, `j`, `k`, `m`, `n`,避免使用`l`以免与`1`混淆。 - 异常捕获中的变量通常命名为`e`...

    Flex Button 设置skin后,影响combobox和ColorPicker的显示

    这两个组件都有自己的默认皮肤和交互状态,当全局的按钮皮肤选择器影响到它们时,可能会导致它们的显示异常,如无法正确显示高亮状态、选中状态,或者整个组件的外观与预期不符。 在描述中提到了一个博客链接,虽然...

    AS3和Flex一百条常用的知识收藏.

    【鼠标坐标】在AS3中,`mouseX`和`mouseY`全局变量可以获取当前鼠标指针相对于舞台的X和Y坐标。 【变量类型检查】AS3提供`is`和`typeof`关键字来检查变量的类型。`is`关键字用于判断变量是否是特定类型,返回布尔值...

    flex+AS3编程规范

    - **全局变量**:以类型缩写开头并使用有意义的名称,例如 `intCount`、`numCount`、`strName`、`isBoolean`。 - **临时变量**:使用常用的单个字母如 `i`、`j`、`k`、`m`、`n`,避免使用 `l` (易与数字 1 混淆)。 ...

    Flex&Bison学习——1.1

    然而,在CLion等IDE中调试Flex程序时,可能会遇到问题,如输入控制字符EOF(通常通过Ctrl+D发送)导致程序异常。这是因为某些IDE对EOF的处理存在兼容性问题。为避免此类问题,建议在终端环境下直接运行程序。 总结...

    IT技术文章示例

    根据给定的文件信息,以下是对提及的IT...以上知识点覆盖了IT技术的多个方面,从前端技术(如Flex、jQuery)到后端技术(如Java、Spring、iBatis),再到数据库操作、异常处理等领域,展示了IT技术领域的广阔和深邃。

Global site tag (gtag.js) - Google Analytics