> Java > java지도 시간 > 본문

어떤 반환 문이 가장 중요합니까: Try-Finally 블록에서 최종 값을 밝히나요?

Susan Sarandon
풀어 주다: 2024-11-24 09:39:11
원래의
160명이 탐색했습니다.

Which Return Statement Reigns Supreme: Unraveling the Definitive Value in a Try-Finally Block?

다중 반환의 수수께끼: 최종 반환 값 풀기

메서드 실행이 try-finally 블록 내에서 여러 반환 문을 통과하는 시나리오를 상상해 보세요. 자연스러운 질문이 생깁니다. 어떤 return 문이 궁극적으로 메서드의 최종 반환 값을 결정합니까? 이 수수께끼를 자세히 알아보기 위해 특정 코드 조각을 분석해 보겠습니다.

String test() {
    try {
        return "1";
    } finally {
        return "2";
    }
}
로그인 후 복사

test() 호출의 반환 값이 모든 JVM(Java Virtual Machine)에서 일관되는지 여부를 이해하는 것이 흥미로운 점입니다. 이 미스터리의 열쇠는 자바 언어 사양에 있습니다.

언어 사양 입장 밝히기

자바 언어 사양에 따르면 finally 블록의 반환값이 try 블록의 반환값을 덮어씁니다. 따라서 사용 중인 JVM에 관계없이 "2"가 최종 반환 값으로 명확하게 지정됩니다.

Sun JVM 및 그 이후 버전과의 적합성 확인

경험적으로 Sun JVM은 이 사양을 준수합니다. test()의 반환 값으로 "2"를 일관되게 렌더링합니다. 그러나 이 준수는 단순히 JVM 특유의 특이한 사항이 아니라는 점에 유의하는 것이 중요합니다.

사양에서는 명시적으로 이를 의무화하고 있으며, 이를 벗어나는 모든 JVM은 비준수로 간주됩니다. 따라서 사양을 준수하는 모든 JVM에서는 최종 반환 값이 항상 "2"라고 주장하는 것이 안전합니다.

엄중한 경고: 혐오스러운 코딩을 피하세요

사양에서는 다음에 대한 명확성을 제공합니다. 반환 값 동작을 고려하면 단일 메서드 내에서 여러 반환을 사용하지 않는 것이 좋습니다. 이러한 코딩 관행은 불필요한 혼란을 야기하고 기본적인 코딩 원칙을 위반합니다.

컴파일러는 test()의 반환 블록이 결코 (잘못) 실행되지 않을 것이라는 Eclipse의 주장에서 예시된 것처럼 이러한 의심스러운 접근 방식에 대해 종종 경고를 발행합니다. 언어 사양의 지혜를 받아들이고 이러한 혐오스러운 코딩을 피하세요.

위 내용은 어떤 반환 문이 가장 중요합니까: Try-Finally 블록에서 최종 값을 밝히나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿