【问题标题】:ActionScript 3.0 try..catchActionScript 3.0 尝试..catch
【发布时间】:2011-06-14 14:55:45
【问题描述】:

如果我使用

try{
    function1();
    function2();
    function3();
}
catch(e:Error){
    function4();
}

假设在 function2() 中抛出了一个异常,根据定义,哪些代码会被执行? function3() 会被执行吗?捕获后会出现function1的效果吗? (有些编程语言会“倒带”效果,例如如果整个块没有执行)

感谢您的澄清!

【问题讨论】:

    标签: actionscript-3 exception-handling try-catch


    【解决方案1】:

    try catch 将执行所有代码,直到抛出异常。那时,异常会冒泡,直到遇到 catch 块或程序退出。 Flash 不会“倒回”它已执行的任何代码。

    说 function2() 是 10 行,第 4 行抛出异常,第 5-10 行不会被执行。 function3() 也不会。代码会进入你的catch,然后执行function4()。

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

    【讨论】:

    • 谢谢!如果 finally 仍然执行,那么将代码放在 catch 子句之后而不是将其放入 'finally' 有什么区别?
    • stackoverflow.com/questions/547791/why-use-finally-in-c 对此有一个很好的答案。一般的答案是即使您的catch 代码本身抛出异常,finally 也会执行。
    猜你喜欢
    • 1970-01-01
    • 2020-03-20
    • 2013-06-19
    • 1970-01-01
    • 1970-01-01
    • 2013-04-04
    • 1970-01-01
    • 1970-01-01
    • 2014-12-22
    相关资源
    最近更新 更多