[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) |