2009-12-14 24 views
24

प्रदर्शित करते समय जावास्क्रिप्ट में अपवादों को पकड़ने/संभालने पर, मैं यह निर्धारित कैसे कर सकता हूं कि अपवाद कब हुआ था जब कॉल स्टैक था? (और यदि संभव हो तो लाइन नंबर क्या था)जावास्क्रिप्ट अपवाद हैंडलिंग - लाइन नंबर

try 
{ 
    // etc... 
} 
catch (ex) 
{ 
    // At this point here I want to be able to print out a detailed exception 
    // message, complete with call stack, and if possible line numbers. 
} 

उत्तर

16

प्रत्येक ब्राउज़र यह अलग-अलग संभालता है, इसलिए ऐसा करने का सार्वभौमिक तरीका नहीं है। This blog post में सबसे अधिक समर्थित ब्राउज़र के लिए एक स्टैक ट्रेस डंप करने के लिए कुछ अच्छा कोड है। मुझे नहीं लगता कि लाइन नंबर प्रदान करने का एक अच्छा तरीका है।

यदि आप विशेष रूप से एक फ़ंक्शन डीबग करना चाहते हैं, तो Firebug में एक अच्छा स्टैक ट्रेस फ़ंक्शन (v console.trace()) है।

+0

बेशक, फायरबग! – Upperstage

+1

वह ब्लॉग बहुत पुराना है (2008)। एक बेहतर तरीका होना चाहिए। – RayLoveless

+0

ब्लॉग पोस्ट मर चुका है ... –

11

this पर एक नज़र डालें।

एक तरह से उपलब्ध जानकारी का विश्लेषण करने के लिए:

try 
{ 
    doInit(); 
} catch(err) 
{ 
    var vDebug = ""; 
    for (var prop in err) 
    { 
     vDebug += "property: "+ prop+ " value: ["+ err[prop]+ "]\n"; 
    } 
    vDebug += "toString(): " + " value: [" + err.toString() + "]"; 
    status.rawValue = vDebug; 
} 
+0

बस एक नोट - यदि आप नोड सर्वर पक्ष का उपयोग कर रहे हैं तो यह काफी अच्छी तरह से काम करता है। उपरोक्त - पोस्ट करने के लिए धन्यवाद! – j03m

1

मुझे पता चला है कि जावास्क्रिप्ट में आईई के तहत चल रहा यह मुद्दा यह है कि एक अपवाद पकड़ा है पर एक स्टैक ट्रेस कब्जा करने के लिए संभव नहीं है। this के अनुसार पीडीएफ आईई में स्टैक ट्रेस प्राप्त करने का एकमात्र तरीका है यदि आप अपवाद को संभाल नहीं पाते हैं।

संबंधित मुद्दे