एक समान question उत्तर प्रदान करता है।
जेएलएस के अनुसार, डिफ़ॉल्ट रूप से, अपवाद तत्काल होने पर स्टैकट्रैक भर जाता है। हालांकि, ऐसे समय होते हैं जब आप पुनर्स्थापना करते समय कुछ और उपयोगी स्थान पर स्टैक को "रीसेट" करना चाहते हैं।
इस कार्यक्षमता के लिए, हमने किया है fillInStackTrace()
संपादित
ठीक है, आज मुझे पता चला जावा मानक पुस्तकालय विनिर्देश संशोधन 1. के बाद JLS से हटा दिया गया था दूसरे की प्रस्तावना के रूप में संस्करण बताता है:
The specifications of the libraries are now far too large to fit into this volume, and
they continue to evolve. Consequently, API specifications have been removed from
this book. The library specifications can be found on the Web; this specification
now concentrates solely on the Java programming language proper.
इस तरह, हमें इसे समझने के लिए वास्तव में जवाडोक पर अधिक बारीकी से देखने की आवश्यकता है। एपीआई आश्चर्यजनक रूप से ढीला है।पूरे प्रासंगिक भागों हैडर, जिसमें कहा गया है से कर रहे हैं:
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() मेरी धारणा है कि इस वीएम कार्यान्वयन प्रदान करने के लिए अनुमति देने के लिए है
Prints this throwable and its backtrace to the standard error stream.
है जो कुछ भी उनके संदर्भ के लिए सबसे अधिक प्रदर्शन/उपयुक्त कार्यान्वयन है। इस संदर्भ के साथ, स्पष्ट fillInStackTrace() सार्वजनिक होने से भी और अधिक समझ में आता है।
डिफ़ॉल्ट रूप से, वर्चुअल मशीन आपको इसके सर्वोत्तम प्रयास बैकट्रैक स्थान प्रदान करती है। FillInStackTrace() सार्वजनिक बनाना डेवलपर्स को और परिष्कृत करने की अनुमति देता है।
-
एक अंतिम संपादित करें :)
मैं relevant bits of the JLS First Edition करने के लिए एक शेष लिंक को ट्रैक करने में कामयाब रहे और मैं एक और कारण की पेशकश करने क्यों विधि सार्वजनिक है या नहीं। यह जावा में एक सामान्य स्पष्टीकरण बेहतर या बदतर है।
यह हमेशा इस तरह से किया गया था।
यह दिलचस्प है, लेकिन अपवादों के माध्यम से प्रवाह को नियंत्रित करने के लिए जावा की फिर से अवधारणा नहीं है? –
सामान्य हां में, लेकिन जैसा कि आप देख सकते हैं कि आप लिंक का पालन करते हैं, कभी-कभी यह बहुत उपयोगी होता है। – sbridges
मुझे संदेह है कि यह उपयोग डिजाइनरों का इरादा था – Attila