在Flex应用中,可以使用FlexErrorHandler组件来捕获并处理Flex组件抛出的所有异常。在Flex应用配置中设置该组件的属性,可以将其应用于Flex渲染器、应用程序域、组件树的所有部分或特定类型和阶段的事件。捕获所有异常时可以考虑以下几点:
在flex application XML配置文件中,可以在<application>元素内添加如下的代码:
<mx:FlexApplication xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script><![CDATA[
import mx.collections.ArrayCollection;
]]>
</mx:Script>
<mx:ExceptionHandler creationPolicy="never">
<mx:catchAll/>
</mx:ExceptionHandler>
<mx:ArrayCollection id="myData">
<mx:Object id="item1" xmlns="">
<property name="name">John Smith</property>
<property name="age">30</property>
</mx:Object>
<mx:Object id="item2" xmlns="">
<property name="name">Jane Doe</property>
<property name="age">25</property>
</mx:Object>
</mx:ArrayCollection>
<mx:XML id="xmlData" source="myData.xml"/>
<mx:WebService id="myWebService" endpoint="http://localhost/myWebService.asmx" results="return req.serializeToString()">
<mx:operation>
<mx:Call>
<mx:arguments>
<mx:String>getData()</mx:String>
</mx:arguments>
</mx:Call>
</mx:operation>
</mx:WebService>
<mx:Script><![CDATA[
import mx.controls.Alert;
private function getData() {
myWebService.send();
myWebService.destinationVariable = "arrayData";
}
private function processData() {
if (myData.length > 0) {
// process data
} else {
Alert.show("No data available");
}
}
]]>
</mx:Script>
</mx:FlexApplication>
```在上述代码中,我们可以使用FlexErrorHandler的catchAll属性来捕获所有类型的异常,通过使用mx:ExceptionHandler的creationPolicy属性来指定在何时创建一个ExceptionHandler实例以处理异常。在 FlexExceptionHandler实例中添加一个catchAll属性,这样在异常捕获时就可以捕获到所有类型的异常。此外,可以将FlexExceptionHandler实例添加到Flex应用的根容器中,以捕获应用程序中的所有异常。
领取专属 10元无门槛券
手把手带您无忧上云