जवाबों:
एक पल के लिए, स्टैक ओवरफ्लो को सिर देता है - जावा अपवाद कितने धीमे हैं?
यह पता चला है कि अपवादों को फेंकने का महंगा हिस्सा स्टैक ट्रेस की आबादी है जो अपवाद के साथ जाता है।
यह स्टैक ट्रेस बहुत मददगार होता है जब समस्याओं का पता लगाने के लिए डिबगिंग करने की कोशिश की जाती है कि चीजें कहां से मिल रही हैं। समस्याओं में से एक मानक प्रश्न है "कोड क्या है" और "स्टैक ट्रेस क्या है"। उन दो चीजों के बिना, समस्या का निदान करना नामुमकिन है।
हालांकि, सभी अपवाद समस्याओं से उत्पन्न नहीं होते हैं । उनमें से कुछ, आप लगभग उम्मीद करते हैं।
स्थिति पर विचार करें कि आप कुछ स्रोत से एक स्ट्रिंग मिल गया है और आप इसके साथ एक पूर्णांक प्रारूप में वापस लाने के लिए चाहते हैं कि Integer.decode ।
Integer foo = Integer.decode(str);
लेकिन वह decode
एक जाँच फेंकता है NumberFormatException
। ठीक है...
Integer foo;
try {
foo = Integer.decode(str);
} catch (NumberFromatException e) {
// raise an error back to the input form
}
लेकिन आप वास्तव में स्टैक ट्रेस के बारे में परवाह नहीं करते हैं ... लेकिन वहाँ। और बस थोड़ा सा धीमा है क्योंकि यह स्टैक ट्रेस को आबाद करता है।
इस प्रकार, स्काला में, आपको NoStackTrace
निम्न मिला है :
अपवाद के लिए एक लक्षण, जो दक्षता कारणों से, स्टैक ट्रेस में नहीं भरता है। स्टैक ट्रेस दमन को वैश्विक स्तर पर scala.sys.SystemProperties में एक संपत्ति संपत्ति आवरण के माध्यम से अक्षम किया जा सकता है।
आप की जरूरत नहीं है क्या आबाद नहीं है। आप स्टैक ट्रेस के बारे में परवाह नहीं करते हैं क्योंकि आप इसे वहीं संभाल रहे हैं और फिर। यह कुछ ऐसा नहीं है जो पास हो रहा है, और यह सब असाधारण भी नहीं है।
जब आप जानते हैं कि आप जो संभाल रहे हैं, उसका उपयोग करने के लिए इसका बुरा अभ्यास नहीं है। लेकिन, यदि आप इसे श्रृंखला में उत्तीर्ण कर रहे हैं - इसका उपयोग न करें - तो आपको बस लॉग इन करने की आवश्यकता हो सकती है जहां से कुछ अपवाद आया था।