2011-06-14 2 views
5

내가액션 스크립트 3.0에서는 try..catch

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

를 사용의이 기능 2로 가정 해 봅시다 경우() 예외가 코드 중 어느 것이 정의에 의해 실행됩니까, 발생합니다? function3() 실행됩니까? 캐치 후에 function1의 효과가 나타날 것입니까? (전체 블록이 실행되지 않았던 것과 같은 효과를 '되감기'하는 프로그래밍 언어가 있음)

설명해 주셔서 감사합니다!

답변

9

try catch는 예외가 throw 될 때까지 모든 코드를 실행합니다. 이 시점에서 catch 블록을 누르거나 프로그램이 종료 될 때까지 예외가 버블 링됩니다. Flash는 실행 한 모든 코드를 "되감습니다".

함수 2()는 10 행이고 ​​행 4는 예외를 발생시키고 5 행 내지 10 행은 실행되지 않습니다. 또한 function3()도 수행하지 않습니다. 코드가 catch에 들어가고 function4()를 실행합니다.

try..catch ..에서 사용하기위한 또 다른 구조는 finally 블록입니다. finally 블록은 try 또는 catch 후에 실행되는 코드 섹션입니다. 특히, myNetConn = null과 같이 NetConnection을 닫는 데 오류가 있었지만 여전히 객체를 null로 유지하려는 경우에 유용합니다.

+1

감사합니다. 그럼에도 불구하고 finally가 실행되면 catch 문 바로 뒤의 코드를 'finally'에 두는 것의 차이점은 무엇입니까? – Mat

+2

http://stackoverflow.com/questions/547791/why-use-finally-in-c 아주 좋은 답변이 있습니다. 일반적인 대답은 'catch'코드가 예외 자체를 던지더라도 'finally'가 실행된다는 것입니다. –

+0

+는 마침내 ** ** 및 ** ** 오류없이 **를 실행합니다. – n4pgamer

관련 문제