फेंक दिए गए अपवादों की एक श्रृंखला प्राप्त करना
हालांकि जावास्क्रिप्ट अपवादों को बढ़ाने की अनुमति देता है, एक कस्टम अपवाद के लिए स्टैक ट्रेस प्राप्त करना चुनौतीपूर्ण हो सकता है . यह आलेख विशेष रूप से उपयोगकर्ता-परिभाषित अपवादों के लिए स्टैक ट्रेस पुनर्प्राप्त करने के लिए विभिन्न तरीकों की खोज करता है।
त्रुटि ऑब्जेक्ट की स्टैक संपत्ति एक सरल समाधान प्रदान करती है। एक नई त्रुटि ऑब्जेक्ट बनाकर और उसकी स्टैक प्रॉपर्टी तक पहुंच कर, आप एक ट्रेस कैप्चर कर सकते हैं:
function stackTrace() {
var err = new Error();
return err.stack;
}
यह दृष्टिकोण इसके समान एक स्टैक ट्रेस उत्पन्न करता है:
DBX.Utils.stackTrace@http://localhost:49573/assets/js/scripts.js:44 DBX.Console.Debug@http://localhost:49573/assets/js/scripts.js:9 .success@http://localhost:49573/:462 x.Callbacks/c@http://localhost:49573/assets/js/jquery-1.10.2.min.js:4 x.Callbacks/p.fireWith@http://localhost:49573/assets/js/jquery-1.10.2.min.js:4 k@http://localhost:49573/assets/js/jquery-1.10.2.min.js:6 .send/r@http://localhost:49573/assets/js/jquery-1.10.2.min.js:6
यह प्रारूप कॉलिंग फ़ंक्शन, URL और क्रमिक कॉलिंग फ़ंक्शन प्रदान करता है।
आधुनिक ब्राउज़रों के लिए, एक अधिक सरल विधि उपलब्ध है:
console.trace(); // (MDN Reference)
यह फ़ंक्शन एक स्टैक ट्रेस कैप्चर करता है और इसे कंसोल में प्रदर्शित करता है।
मूल थ्रेड में एक वैकल्पिक विकल्प प्रस्तावित किया गया था:
function stacktrace() {
function st2(f) {
return !f ? [] :
st2(f.caller).concat([f.toString().split('(')[0].substring(9) '(' f.arguments.join(',') ')']);
}
return st2(arguments.callee.caller);
}
यह फ़ंक्शन कॉल स्टैक को पुनरावर्ती रूप से पार करता है और एक स्टैक ट्रेस स्ट्रिंग बनाता है।
इन विधियों को लागू करके, डेवलपर्स कस्टम जावास्क्रिप्ट अपवादों के लिए प्रभावी ढंग से स्टैक ट्रेस प्राप्त कर सकते हैं, जिससे अधिक मजबूत त्रुटि प्रबंधन और डिबगिंग सक्षम हो सकती है। .
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3