سؤال

عند اصطياد / مناولة الاستثناءات في جافا سكريبت، كيف يمكنني تحديد ما كانت مكدس المكالمات عندما حدث الاستثناء؟ (وأيضا إذا كان ذلك ممكنا ما كان رقم الخط)

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.
}
هل كانت مفيدة؟

المحلول

يعالج كل متصفح هذا بشكل مختلف، لذلك لا توجد طريقة عالمية للقيام بذلك. هذه المدونة post. لديه بعض الكود الجيد لتفريغ أثر المكدس للحصول على معظم المتصفحات المدعومة. لا أعتقد أن هناك طريقة جيدة لتزويد رقم الخط.

إذا كنت تبحث عن تصحيح وظيفة واحدة على وجه الخصوص، Firebug. لديه وظيفة تتبع مكدس جيدة (Vis Console.Trace ()).

نصائح أخرى

القي نظرة على هذه.

طريقة لتحليل المعلومات المتاحة:

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; 
}

لقد اكتشفت أنه في JavaScript يعمل بموجب IE، لا يمكن التقاط تتبع مكدس عند نشغل استثناء. وفق هذه PDF الطريقة الوحيدة للحصول على تتبع مكدس في IE هو إذا كنت لا تتعامل مع الاستثناء.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top