ActionScript 3.0 try..catch

Mat*_*Mat 5 exception-handling try-catch actionscript-3

如果我使用

try{
    function1();
    function2();
    function3();
}
catch(e:Error){
    function4();
}
Run Code Online (Sandbox Code Playgroud)

假设在function2()中抛出一个异常,哪个代码按定义执行?function3()会被执行吗?捕获后,function1的效果是否会出现?(有些编程语言可以"回放"效果,例如整个块是否未执行)

谢谢你的澄清!

Ben*_*oux 9

try catch将执行所有代码UNTIL抛出异常.此时,异常将一直存在,直到它遇到catch块或程序退出.Flash不会"回放"它执行的任何代码.

假设function2()是10行,第4行抛出异常,第5-10行不会被执行.function3()也不会.代码将进入catch,然后执行function4().

在try..catch中使用的另一个构造是finally块,它是在try或catch之后执行的代码段.它对于myNetConn = null您可能在关闭NetConnection时出错但仍希望使对象无效的事情特别有用.

  • http://stackoverflow.com/questions/547791/why-use-finally-in-c对此有一个非常好的答案.一般的答案是`finally`将被执行,即使你的`catch`代码本身也会抛出异常. (2认同)