2011-01-30 2 views
22

나는 왜 emma가 "finally"블록에 대한 완전한 코드 적용을 제공하지 않는지 알지 못합니다. 이것을 설명하기 위해 간단한 예제 프로그램을 만들었습니다. 나는이 프로그램을 실행하면왜 emma가 finally 블록을 완전히 덮지 않습니까?

는 보여줍니다

try 
finally 

을 마지막으로 빨간색 (실행되지 않음)과 "마지막" "에 println로 표시되는 이유 그래서하지 않는다"(부분적으로 실행) 노란색으로 표시된다 . 내가 놓친 게 있니? 어떻게 마마는 마침내 블록이 덮여 있다는 것을 이해하게합니까?

example

고마워요!

답변

16

부분적으로 덮여있는 finally 블록의 제목을 터치하면 EMMA의 질문 : Implicit branches due to finally blocks.에 대한 항목이 있습니다. 아마 그것이 도움이됩니다.

+2

감사합니다. 사실 try 블록 안에 예외없이 코드를 실행하면 finally 블록을 완전히 덮을 수 있습니다. – stivlo

+0

@stivlo 더 설명해 주시겠습니까? – JPM

+3

@JPM 이유는 aioobe에서 제공하는 링크로 작성되었습니다. * 컴파일러는 try 블록에 예외가 발생했는지 여부에 관계없이 항상 finally 코드가 완료되도록해야합니다. 따라서 finally 블록으로 이어지는 가능한 경로는 두 가지가 있습니다. 예외가 있거나없는 예외입니다. * – stivlo