जावास्क्रिप्ट में, मैं कुछ सफाई प्रदर्शन करने के लिए जब एक अपवाद होता है चाहता हूँ लगता है, लेकिन अपवाद ढेर, जैसे ऊपर प्रचार करने के लिए आगे बढ़ें:मैं जावास्क्रिप्ट में अपवाद कैसे पुनर्स्थापित कर सकता हूं, लेकिन ढेर को संरक्षित करता हूं?
try {
enterAwesomeMode();
doRiskyStuff(); // might throw an exception
} catch (e) {
leaveAwesomeMode();
throw e;
}
doMoreStuff();
leaveAwesomeMode();
इस कोड के साथ समस्या यह है कि पकड़ने और अपवाद का कारण बनता है rethrowing स्टैक ट्रेस जानकारी उस बिंदु तक खो जाने के लिए, ताकि अगर अपवाद को बाद में पकड़ा जाता है, तो ढेर पर ऊंचा हो जाता है, स्टैक ट्रेस केवल फिर से फेंक जाता है। यह बेकार है क्योंकि इसका मतलब है कि इसमें उस फ़ंक्शन को शामिल नहीं किया गया है जो वास्तव में अपवाद को फेंक देता है।
जैसा कि यह पता चला है, कम से कम क्रोम में यह वही व्यवहार है (यानी, यह फिर से फेंक नहीं है कि समस्या ठीक है, लेकिन किसी भी अपवाद हैंडलर ब्लॉक की उपस्थिति बिल्कुल भी है।)
क्या किसी को जावास्क्रिप्ट में अपवाद को पुनर्स्थापित करने के तरीके के बारे में पता है लेकिन इसके साथ जुड़े स्टैक ट्रेस को संरक्षित करता है? यह विफल होने पर, अपवाद-सुरक्षित क्लीनअप हैंडलर जोड़ने के अन्य तरीकों के लिए सुझावों के बारे में, जबकि अपवाद होने पर पूर्ण स्टैक निशान को कैप्चर करते समय भी?
किसी भी संकेत दिए गए के लिए धन्यवाद :)
0x3a28213a - मेरी धन्यवाद ;-) – bacar
धोखा देने के लिए इंतजार कर रहे: https://stackoverflow.com/questions/5249960/javascript-rethrowing-an-exception-preserving-the-stack-trace – MatthewMartin
यह सवाल क्योंकि बंद किया जाना चाहिए यह 2012 में तय क्रोम बग को संदर्भित करता है। –