return 과 finally 실행 순서

2905 단어
더 읽 기
문장 참조:http://www.cnblogs.com/fery/p/4709841.html
return 이 있 는 경우 try catch finally 의 실행 순서 (가장 설득력 있 는 요약)
결론: 1. 이상 이 있 든 없 든 finally 블록 에서 코드 가 실 행 됩 니 다.2. try 와 catch 에 return 이 있 을 때 finally 는 실 행 됩 니 다.3. finally 는 return 뒤의 표현 식 연산 후에 실 행 됩 니 다.4. finally 에 return 을 포함 하지 않 는 것 이 좋 습 니 다. 그렇지 않 으 면 프로그램 이 미리 종료 되 고 반환 값 은 try 나 catch 에 저 장 된 반환 값 이 아 닙 니 다.예: 상황 1: try {} catch () {} finally {} return;            분명히 프로그램 이 순서대로 실행 된다.상황 2: try {return;} catch () {} finally {} return;          프로그램 이 try 블록 에서 return 을 실행 하기 전에 (return 문장의 표현 식 연산 포함) 코드 를 실행 합 니 다.         finally 블록 을 실행 하고 마지막 으로 try 에서 return 을 실행 합 니 다.         finally 블록 뒤의 문 구 는 return 입 니 다. 프로그램 이 try 에서 return 되 었 기 때문에 실행 하지 않 습 니 다.상황 3: try {} catch () {return;} finally {} return;         프로그램 이 먼저 try 를 실행 합 니 다. 이상 실행 catch 블록 이 있 으 면,         이상: catch 에서 return 을 실행 하기 전에 (return 문장의 표현 식 연산 포함) 코드 를 실행 하고 finally 문장의 모든 코드 를 실행 합 니 다.                     마지막 으로 catch 블록 에서 return 을 실행 합 니 다. finally 이후 4 곳 의 코드 가 실행 되 지 않 습 니 다.         이상 없 음: try 를 실행 한 다음 finally 를 반환 합 니 다. 상황 4: try {return;} catch () {} finally {return;}          프로그램 이 try 블록 에서 return 을 실행 하기 전에 (return 문장의 표현 식 연산 포함) 코드 를 실행 합 니 다.          finally 블록 을 다시 실행 합 니 다. finally 블록 에 return 이 있 기 때문에 미리 종료 합 니 다.상황 5: try {} catch () {return;} finally {return;}          프로그램 이 catch 블록 에서 return 을 실행 하기 전에 (return 문장의 표현 식 연산 포함) 코드 를 실행 합 니 다.          finally 블록 을 다시 실행 합 니 다. finally 블록 에 return 이 있 기 때문에 미리 종료 합 니 다.상황 6: try {return;} catch () {return;} finally {return;}          프로그램 이 try 블록 에서 return 을 실행 하기 전에 (return 문장의 표현 식 연산 포함) 코드 를 실행 합 니 다.          이상: catch 블록 에서 return 을 실행 하기 전에 (return 문장의 표현 식 연산 포함) 코드 를 실행 합 니 다.                       finally 블록 을 다시 실행 합 니 다. finally 블록 에 return 이 있 기 때문에 미리 종료 합 니 다.          이상 없 음: finally 블록 을 다시 실행 합 니 다. finally 블록 에 return 이 있 기 때문에 미리 종료 합 니 다.최종 결론: try 나 catch 의 return 문 구 를 실행 하기 전에 finally 문 구 를 먼저 실행 합 니 다. finally 가 존재 한다 면.                  finally 에 return 문구 가 있 으 면 프로그램 이 return 되 기 때문에 finally 의 return 은 반드시 return 될 것 입 니 다.                  컴 파일 러 는 finally 의 return 을 warning 으로 구현 합 니 다.
 
 
        
public class FinallyTest  
{
	public static void main(String[] args) {
		 
		System.out.println(new FinallyTest().test());;
	}

	static int test()
	{
		int x = 1;
		try
		{
			x++;
			return x;
		}
		finally
		{
			++x;
		}
	}
}
   2。
	 try   ,   return   ,            ,    ,    finally   。
     ,try               x       ,   finally  ,         ,
  ,  finally    x     ,          。
           。

좋은 웹페이지 즐겨찾기