2013-06-26 2 views
13

try/catch 블록을 사용하지 않고 finally 블록을 사용하려고 시도하지만 Eclipse에서 오류가 발생합니다.try & catch없이 finally 블록을 사용하는 것이 유효합니까?

try/catch 블록을 사용하지 않고 finally 블록을 사용할 수 있습니까?

+0

앞에'당신이이'goto'는'finally' 문을 통해 건너 사용할 경우'finally' 행동 할 것입니다 방법 try'? 'finally'는'try' 문과 관련이 있다고 표시된 코드에만 관련이 있습니다. 그렇지 않으면 동작이 매우 성가 시게됩니다. – CodeCamper

+0

catch 블록을 사용하지 않고 try-with-finally의 사용 사례는 무엇입니까? 나는 당신이 단지 "마침내"사용할 수 없다고 생각합니다. try 블록을 사용해야합니다. – user1923551

답변

12

finally은 적어도 try 블록이어야하며, catch은 선택 사항입니다. finally 블록의 요점은 예외가 발생했는지 여부에 관계없이 내용이 정리되었는지 확인하는 것입니다. JLS

최종적으로 절에 따라, finally 블록은 try 블록과 상관없이 컨트롤이 try 블록 또는 catch 블록 나뭇잎 방법, 실행되지 않을 수 있습니다 어떤 catch 블록 후 실행되도록합니다.

그러므로 finally 앞에는 항상 try 블록이 있어야합니다.

5

블록이 finallytry 블록이 있어야합니다. try 블록은 어떤 코드 행 뒤에 finally 코드가 올지를 정의합니다. try 블록 이전에 예외가 발생하면 finally 코드가 실행되지 않습니다. catch 블록을 추가

는 선택 사항입니다 :

try { 

    // something 

} finally { 
    // guaranteed to run if execution enters the try block 
} 
1

마침내 블록 항상 때 try 블록 종료를 실행합니다. 따라서 잡을 필요없이 마침내 사용할 수 있지만 try를 사용해야합니다. 자세한 내용은

오라클 트레일에서 여기

0

doc을 확인하십시오

마지막으로 항상 차단할 때 try 블록 종료를 실행합니다. 이 은 예기치 않은 예외가 발생하더라도 finally 블록이 실행되도록합니다.

위의 설명에서 마침내 단독으로 차단할 수 없습니다. 허용되는 조합은 다음과 같습니다.

  1. 는 캐치

  2. 프로그램 제어 흐름이 유입되면 실행할 finally 블록 내의 코드 보장 마지막

0

시도 마침내

  • 시도 캐치 시도 코르 응답 try 블록. 따라서 없이 finally을 갖는 것은 이치에 맞지 않습니다.

    유일한 예외는 finally 블록 전에 프로그램이 System.exit(...) 블록을 만나면 가상 컴퓨터가 종료되기 때문입니다.

  • 0

    아니 당신이

    당신이 try없이 Try-catch-finally 또는

    try { 
    
        }catch (Exception e){ 
    
        } 
        finally{ 
    
        } 
    

    또는

    try { 
    
        } 
        finally{ 
    
        } 
    
    1

    try-finally는 이유는 왜 당신이 finally를 가질 수 없습니다 사용할 수 없습니다입니다 당신이 수 있기 때문에에는 복수 finally 상태가 있습니다. 동일한 범위에있는 try은 오류가 발생할 경우 finally과 관련된 코드 블록을 나타냅니다.

    finally의 또 다른 흥미로운 특징은 try이 입력 된시기에 관계없이 실행해야한다는 것입니다. 예를 들어 goto을 사용하여 finally 문을 건너 뛰면 어떻게 될까요? gototry 안에 있으면 finally 문을 실행하지만 goto 문이 try 문구 위/밖에 있으면 finally 코드를 건너 뜁니다. finallytry으로 둘러싸인 코드에만 관련이 있습니다. 시도가 없다면 finally은 아무 관련이 없습니다.

    1
    • try 블록 만 사용하면 올바르지 않습니다.
    • try 블록은 catch에서 한 블록 만 사용하거나 마지막으로 블록과 함께 사용할 수 있습니다.
    • try 블록을 catch 및 finally와 함께 사용할 수 있습니다. finally 블록 을 try 블록과 함께 사용하면 catch 블록이 선택 사항이됩니다. 당신이없이`finally`를 둘 수 있었다하더라도
    2
    try { 
        // Block of code with multiple exit points 
    } 
    finally { 
        // Block of code that must always be executed when the try block 
        // is exited, no matter how the try block is exited 
    } 
    
    +2

    설명을 추가해야합니다. – Zelldon

    관련 문제