유사하게 question이 답을 제공합니다.
기본적으로 JLS에 따르면 예외 추적시 스택 추적이 채워집니다. 그러나 스택을 재사용 할 때 좀 더 유용한 위치로 스택을 "재설정"할 수도 있습니다.
이 기능을 허용하려면, 우리는이에 fillInStackTrace()
편집
음, 오늘은 자바 표준 라이브러리의 사양은 두 번째의 서문으로 개정 1. 후 JLS에서 제거 배웠다 버전 상태 :
이와 같이, 우리는 실제로 javadoc을보다 자세히 살펴볼 필요가 있습니다. API는 놀랍게도 느슨합니다.전체 관련 부분은 내용의 헤더에서 다음과 같습니다
Instances of two subclasses, Error and Exception, are conventionally used to indicate
that exceptional situations have occurred. Typically, these instances are freshly
created in the context of the exceptional situation so as to include relevant
information (such as stack trace data).
그리고 java.lang.Throwable.printStackTrace은() 내 믿음이 VM의 구현을 제공 할 수 있도록하는 것입니다
Prints this throwable and its backtrace to the standard error stream.
무엇이든 자신의 상황에 가장 적합한/적절한 구현입니다. 이 컨텍스트에서 명시적인 fillInStackTrace() public을 사용하면 훨씬 더 의미가 있습니다.
기본적으로 가상 시스템은 최선의 백 트레이스 위치를 제공합니다. fillInStackTrace() public을 사용하면 개발자가 더 세분화 할 수 있습니다.
-
일 최종 편집 :
내가 relevant bits of the JLS First Edition에 남아있는 링크를 추적 관리하고 나는 방법은 공개 왜 하나 더 이유를 제공하고 싶습니다. 그것은 Java에 대한 공통된 설명보다 좋거나 나 빠릅니다.
항상 이런 식이었습니다.
이것은 흥미 롭지 만, 예외를 통해 흐름을 제어하는 Java의 개념은 아닙니다. –
일반적으로 네,하지만 링크를 따라 가는지 알 수 있듯이 때로는 매우 유용합니다. – sbridges
나는이 사용이 디자이너의 의도라고 의심한다. – Attila