[flex] flex异常捕捉的一个怪异问题

xianzhideng 2009-12-09

   测试代码如下:

 

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
				layout="absolute" creationComplete="init()">
	<mx:Script>
		<![CDATA[
			import mx.controls.Alert;
			private function init():void{
				var a:String = null;
				try{
					var myurl:URLLoader = new URLLoader();
					myurl.load(new URLRequest("aaa.xml"));
				}catch(e:Error){
					Alert.show("进入捕捉1");
				}
			}
		]]>
	</mx:Script>
</mx:Application>

  在这里 aaa.xml是不存在的,按照逻辑报错是会被catch捕捉,但是再fb编辑器中执行测试的时候却依然弹出错误信息“Error #2044: 未处理的 ioError:。 text=Error #2032: 流错误”。 请问这个错误 如何才能捕捉呢?

 

 经过几次的实验,发现有以下现象:

 1.将debug目录下生成的 swf 放在本地直接运行是可以捕捉的,但在FB中是捕捉不了的。

 2.在release目录下生成的 swf 本地和FB中都可以捕捉。

 3.两个目录下生成的swf放在web服务器上,通过ie访问依然是不能捕捉的。

 不知道这个是不是 flex bug啊·太怪异了·

fantasy 2009-12-09
Flex的异常和javash是有区别的,异常不是抛出的。
有些异常需要监听。你上面的异常就需要监听。
jinxinhero 2009-12-14
不同于java的异常机制
Flex不完全是通过try-catch这中方式捕获异常
还包括异常事件的机制,如IOErrorEvent。在涉及加载等等的异步操作比较常见
上面的情况应该使用如下方式:
loader.addEventListener(IOErrorEvent.IO_ERROR, handleError)
Global site tag (gtag.js) - Google Analytics