ActionScript 3.0 try..catch

问题描述

| 如果我用
try{
    function1();
    function2();
    function3();
}
catch(e:Error){
    function4();
}
并假设在function2()中引发了异常,哪个代码按定义执行?会执行function3()吗?捕获后是否会出现function1的效果? (有些编程语言会“倒退”效果,例如是否没有执行整个块) 感谢您的澄清!     

解决方法

        尝试捕获将执行所有代码,直到抛出异常。到那时,异常将冒泡直到它碰到catch块或程序退出。 Flash不会“倒带”已执行的任何代码。 假设function2()为10行,第4行抛出异常,则不会执行第5-10行。 function3()也不会。该代码将进入您的陷阱,然后执行function4()。 在try..catch ..中使用的另一个构造是finally块,它是在try或catch之后执行的代码部分。对于像ѭ1这样的事情,它在关闭NetConnection时可能会出错,但仍然希望将该对象设为空时特别有用。