Java 바이트 코드에는 예외 처리기 유형으로 상수 풀 인덱스 0을 지정하여 모든 예외를 포착 할 수있는 옵션이 있습니다. 그러나, 내가 이해하는 바와 같이 이것은 Throwable을 잡는 것과 정확히 동일하다. 그렇다면이 기능의 목적은 무엇입니까? 자바 설계자는 언젠가 Throwable에서 상속받지 않는 예외 유형을 추가 할 계획을 세웠습니까? 그것은 그 것처럼 보이지 않지만 게으름을 제외하고는 다른 설명을 생각할 수 없습니다.JVM의 any 캐치 목적
2
A
답변
0
JVM specification (§4.7.3) 상태 :
catch_type
항목의 값이 0 인 경우,이 예외 핸들러는 모든 예외라고합니다. 이것은finally
(§3.13)을 구현하는 데 사용됩니다. catch_type 제로 사용 §3.13 특별히 논의되지 않지만 자바finally
절 컴파일시 힌트가 사용되는 것을
단서를 제공한다. JVM 디자이너가 Throwable
클래스를 특별히 참조 할 필요없이 모두 예외 유형을 참조하는 간단한 방법을 원했기 때문일 수 있습니다. catch_type 0을 사용하면 상수 풀로 색인을 작성하고 거기에서 java/lang/Throwable
클래스 이름을 확인하지 않고도 JVM에서 쉽게 식별 할 수 있습니다.
실질적으로 말해서 catch_type 0 또는 상수 풀에 대한 인덱스 java/lang/Throwable
을 나타내는 인덱스는 동일하게 작동해야합니다.
관련 문제
- 1. JVM의 인스턴스
- 2. 목적 C와 목적 C++
- 3. 목적
- 4. 목적
- 5. Tomcat JVM의 크기는 가변적입니까?
- 6. 은 JVM의 "java"명령입니까?
- 7. 다른 jvm의 캐시
- 8. JVM의 주요 GC 문제
- 9. 뒤에 숨겨진 목적 setHidden의 목적
- 10. 다른 JVM의 Java 직렬화 문제
- 11. Android JVM의 다른 점은 무엇입니까?
- 12. JVM의 힙 크기 증가에 대해
- 13. .class 파일은 JVM의 실행 파일입니까?
- 14. JVM의 스레드 풀 크기 변경
- 15. NumberFormatException 캐치
- 16. "캐치"오류
- 17. 캐치 SAXNotRecognizedException
- 18. 캐치 db2_prepare는
- 19. 캐치 이벤트
- 20. 시도/캐치
- 21. __init__의 목적
- 22. OptionArg의 목적
- 23. 목적 .H
- 24. 목적 C,
- 25. 목적 C는 -
- 26. - 목적 C
- 27. 거래의 목적
- 28. 열거의 목적
- 29. ServiceContainer의 목적
- 30. 목적 C는
기본적으로 게으름입니다. 나는 그것이 합리적이라고 생각한다. 그건 그렇고, 그것은 단지 마지막으로 사용되지 않습니다. 또한 동기화 된 블록에서 예외 처리에 사용됩니다. – Antimony