2011-06-20 7 views
29

मैं डीबगर में अपना टेस्ट सूट चलाने और किसी भी अप्रत्याशित अपवाद को तोड़ना चाहता हूं, लेकिन जावा क्लासलोडर सामान्य ऑपरेशन के दौरान क्लास नॉटफाउंड अपवादों को फेंक देते हैं।IntelliJ IDEA: मैं अपवाद ब्रेकपॉइंट कैसे बना सकता हूं जो * अपवादों पर रोकता है * को छोड़कर * ClassNotFoundException?

तो यह अच्छा होगा अगर मैं अपवाद ब्रेकपॉइंट बना सकता हूं जो क्लास नॉटफाउंड अपवादों को अनदेखा करता है और बाकी सब कुछ पर रोकता है।

+1

क्या आप पूरा करना चाहते हैं सबसे अच्छा 'करने के लिए किसी भी Exception' –

उत्तर

44

एक चेकबॉक्स टिक यह जवाब यह है कि के रूप में लगभग एक ही है माइंडस का, लेकिन विवरण मेरे लिए पहली बार उनके सुझाव को अनदेखा करने के लिए पर्याप्त थे, और इंटेलिज समर्थन लड़कों/लड़कियों को परेशान करते थे (धन्यवाद सर्ज और यूजीन) :

  • ओपन 'ब्रेकप्वाइंट' विंडो और 'अपवाद ब्रेकप्वाइंट' टैब
  • हाइलाइट करने के लिए जाने के लिए और 'किसी भी अपवाद' को सक्रिय ब्रेकपाइंट
  • केवल 'स्थिति' निम्नलिखित में स्थिति और प्रकार को सक्रिय करें :

    !(this instanceof java.lang.ClassNotFoundException) 
    

आईडिया 'java.lang' तुरंत (संस्करण 11.01) निकल जाएगी, लेकिन इस समाधान के लिए काम करने के लिए यह आवश्यक है। यदि आप इसका उपयोग नहीं करते हैं, तो आपको क्लास नॉटफाउंड पॉपअप बॉक्स (विडंबना ओह विडंबना) मिलेगा।

मुझे पता चला कि बहुत से 'मानक' पुस्तकालय संचालन के सामान्य प्रवाह में अपवाद फेंकते हैं। जब आप ClassNotFoundException की सफलतापूर्वक अनदेखा करते हैं, तो आप पाएंगे कि अन्य अचानक प्रकट होते हैं। कुछ भी आसान नहीं है।

+1

'यह' कुंजी है, स्पष्ट रूप से! आईडीईए का परीक्षण करते समय 'java.lang' बिट को नहीं हटाया गया, लेकिन इसने अभिव्यक्ति के तहत लाल squiggles डाल दिया और मुझे चेतावनी दी कि 'यह' ClassNotFoundException में परिवर्तित नहीं किया जा सकता है। मैंने बस इसे अनदेखा किया और यह पूरी तरह से काम किया। –

+0

इंटेलिजे 12 में संभावित रूप से तय किया गया है, लेकिन इंटेलिजे 13/एंड्रॉइड स्टूडियो के रूप में, यह पूरी तरह से काम करता है! वास्तव में खुशी है कि मुझे यह सुझाव मिला। –

2
  • सही ब्रेकप्वाइंट पर क्लिक करें और Properties
  • पर क्लिक करें Conditions फलक
  • करने के लिए जाने पर Condition
  • प्रकार !(myException instanceof ClassNotFoundException)
+0

यह एक अपवाद ब्रेकप्वाइंट है प्रपत्र' com.mypackage के एक वर्ग फ़िल्टर लगाकर हासिल की है। * ', तो मैं उस पर राइट क्लिक नहीं कर सकता। .. –

+1

मैंने वैसे भी आपके सुझाव की कोशिश की, आशा है कि 'myException' नामक एक निहित चर है जिसे अपवाद ब्रेकपॉइंट स्थितियों में प्रयोग योग्य है, लेकिन यह काम नहीं करता है। –

+0

क्या आप इसे लाइन ब्रेकपॉइंट नहीं बना सकते? 'myException' का अर्थ शाब्दिक रूप से व्याख्या नहीं किया गया था, लेकिन एक अपवाद के रूप में आप पकड़ते हैं। वैसे भी, आप एक्सेप्शन ब्रेकपॉइंट्स के साथ क्लास फ़िल्टर को परिभाषित कर सकते हैं जो एक समान काम करना चाहिए। – mindas

4

किसी कारण से मैंने "ब्रेकपॉइंट एक्सप्रेशन का मूल्यांकन करने में असफल रहा" जब मैं डाल दिया! क्लास नॉटफाउंड अपवाद स्थिति "किसी भी अपवाद" ब्रेकपॉइंट नियमों के तहत। मैं कस्टम "कोई अपवाद" ब्रेकपॉइंट आइटम बनाकर इसके आसपास काम करने में सक्षम था:

  1. डीबग व्यू से ब्रेकपॉइंट विंडो खोलें।
  2. "कोई अपवाद" अनचेक करें ताकि हम डिफ़ॉल्ट आइटम का उपयोग करके किसी अपवाद पर रोक नहीं पाएंगे।
  3. + साइन पर क्लिक करें, जावा अपवाद ब्रेकपॉइंट्स पर क्लिक करें, "गैर-प्रोजेक्ट क्लासेस शामिल करें" चेक करें, बॉक्स में "java.lang.Exception" टाइप करें, बॉक्स में दिखाई देने वाले परिणाम का चयन करें।
  4. अपवाद आइटम है कि (के तहत "कोई भी अपवाद") सूची में उत्पन्न होता है का चयन करें, और हालत बॉक्स में

    !(this instanceof java.lang.ClassNotFoundException) 
    

    डाल दिया।