2011-05-29 21 views
5

मैं जावा में एक वर्गीकरण पर काम कर रहा था, और मुझे आश्चर्य हुआ कि क्या यह जानना संभव है कि किस वस्तु ने अपवाद फेंक दिया।अपवाद स्रोत ऑब्जेक्ट कैसे प्राप्त करें

मुझे पता है कि अगर आप अपने कस्टम अपवाद नहीं करते, आप निर्माता को संशोधित करने और वस्तु के लिए एक संदर्भ हो सकता है:

public class MyEx extends Throwable { 
    private MyObject object; 

    public MyEx(MyObject o){ 
     super(); 
    } 

    public MyObject getSource(){ 
     return object; 
    } 
} 

लेकिन अगर वहाँ पकड़ने जो throwed का एक और तरीका मौजूद है मैं नहीं जानता कि अपवाद। क्या आप किसी अन्य तरीके से जानते हैं?

उत्तर

4

तुम सिर्फ कोड एक अपवाद फेंक दिया जाता है के किस हिस्से से, आप सरल स्टैक ट्रेस देखने के लिए चाहते हैं। आपको अपवाद उदाहरण पर printStackTrace() पर कॉल करके यह मिलता है।

यह आपको सटीक ऑब्जेक्ट उदाहरण नहीं देता है जो अपवाद को फेंक देता है। इसके लिए आपको एक कस्टम अपवाद को लागू करना होगा जैसा आपने संकेत दिया था। ध्यान दें कि कुछ संदर्भों में ऐसी कोई घटना नहीं है जैसे उदाहरण, उदा। एक स्थिर विधि से फेंक दिया एक अपवाद।

+2

यदि आप स्टैक ट्रेस के साथ और अधिक करना चाहते हैं तो आप अपवाद .getStackTrace() का भी उपयोग कर सकते हैं। – Koekiebox

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