return 과 finally 실행 순서
문장 참조: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 , 。
。
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.