2010-07-28 31 views
12

मैं जानना चाहता हूं कि किसी विधि के भीतर कॉल स्टैक तक पहुंचना संभव है या नहीं, यह देखने के लिए कि किस पैकेज में पैकेज में हम किस नाम में हैं?जावा कॉल स्टैक तक पहुंच

या शायद ऐसा करने का एक और तरीका है?

धन्यवाद,

ExtremeCoder

पी.एस. यह सब जावा

उत्तर

18

में है एक तरीका होता है:

Thread.currentThread().getStackTrace() 

लेकिन वहाँ डिबग प्रयोजनों के लिए की तुलना में इस दूसरे करने के लिए एक कारण नहीं होना चाहिए।

+1

+1: निश्चित रूप से कॉलर के आधार पर व्यवहार नहीं बदलना चाहिए, लेकिन उपरोक्त यह है कि जानकारी कैसे प्राप्त करें। इसके अलावा, यदि आप 1.4 के साथ फंस गए हैं तो आपको जानकारी प्राप्त करने के लिए अपवादों के साथ घूमना होगा; आईएमओ के उन प्रकारों को करने के बजाए जावा 5 में अपग्रेड करने लायक है। –

+0

ओह, स्टैक पढ़ने के साथ चीजों को करने का दूसरा मामला यह है कि यदि आप सुरक्षा संदर्भ कर रहे हैं, लेकिन इसके लिए सुरक्षा नीति उपकरण का उपयोग करना वास्तव में बेहतर है, जिसे आप इसके लिए पहले ही प्राप्त कर चुके हैं। –

+0

उत्तर सही है, लेकिन मैं सिर्फ डीबग के लिए इसका उपयोग करने से असहमत हूं। मेरे आवेदन में मैंने Log4j को एक रैपर लिखा जो कॉलर नाम के अनुसार लॉगिंग संदेशों को एपेंडर को भेजता है। तो आप कोड में 'Logger.getLogger()' को स्पष्ट रूप से कॉल किए बिना, केवल एक पंक्ति के साथ एक लॉग संदेश जोड़ सकते हैं। आप लॉगिंग सुविधा को डीबग उद्देश्य कह सकते हैं, लेकिन वैसे भी। – jutky

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