क्या स्केला में NoStackTrace का उपयोग करना अच्छा है?


11

मैं मिश्रण NoStackTraceमें अपवाद के लिए scala में मिश्रण भर में आया था ।

क्या इसका उपयोग करना अच्छा अभ्यास है, या इसे स्केला और "अकेला" माना जाना चाहिए?

जवाबों:


14

एक पल के लिए, स्टैक ओवरफ्लो को सिर देता है - जावा अपवाद कितने धीमे हैं?

यह पता चला है कि अपवादों को फेंकने का महंगा हिस्सा स्टैक ट्रेस की आबादी है जो अपवाद के साथ जाता है।

यह स्टैक ट्रेस बहुत मददगार होता है जब समस्याओं का पता लगाने के लिए डिबगिंग करने की कोशिश की जाती है कि चीजें कहां से मिल रही हैं। समस्याओं में से एक मानक प्रश्न है "कोड क्या है" और "स्टैक ट्रेस क्या है"। उन दो चीजों के बिना, समस्या का निदान करना नामुमकिन है।

हालांकि, सभी अपवाद समस्याओं से उत्पन्न नहीं होते हैं । उनमें से कुछ, आप लगभग उम्मीद करते हैं।

स्थिति पर विचार करें कि आप कुछ स्रोत से एक स्ट्रिंग मिल गया है और आप इसके साथ एक पूर्णांक प्रारूप में वापस लाने के लिए चाहते हैं कि 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 में एक संपत्ति संपत्ति आवरण के माध्यम से अक्षम किया जा सकता है।

आप की जरूरत नहीं है क्या आबाद नहीं है। आप स्टैक ट्रेस के बारे में परवाह नहीं करते हैं क्योंकि आप इसे वहीं संभाल रहे हैं और फिर। यह कुछ ऐसा नहीं है जो पास हो रहा है, और यह सब असाधारण भी नहीं है।

जब आप जानते हैं कि आप जो संभाल रहे हैं, उसका उपयोग करने के लिए इसका बुरा अभ्यास नहीं है। लेकिन, यदि आप इसे श्रृंखला में उत्तीर्ण कर रहे हैं - इसका उपयोग न करें - तो आपको बस लॉग इन करने की आवश्यकता हो सकती है जहां से कुछ अपवाद आया था।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.