क्या IntelliJ में "अपवाद पर ब्रेक" है?


318

क्या ऐसी सुविधा है जो पहली अपवाद घटना पर स्वचालित रूप से डिबगिंग को तोड़ देगी?

सो हम्

  1. आवेदन शुरू करें
  2. ऐसा कुछ करें जो अपवाद को फेंक दे
  3. IntelliJ हाइलाइट की गई लाइन को पॉपअप करता है जहां अपवाद हुआ।

आप शायद बिना किसी अपवाद के केवल सही पर टूटना चाहते हैं?
डेविड फेरेंस्की रोगोजान

जवाबों:


367

रन | देखें ब्रेकप्वाइंट | अपवाद ब्रेकप्वाइंट


दुर्भाग्य से, मैंने पाया है कि व्यवहार में (बड़े डेटा के साथ), फ़्रेम चर जो आप परवाह करते हैं, हमेशा लोड नहीं करते हैं।
information_interchange

158

संवाद को पॉप अप करने का एक तेज़ तरीका Ctrl+ SHIFT+ F8(मैक: Cmd+ SHIFT+ पर F8) प्रेस करना है , फिर अपवाद ब्रेकपॉइंट टैब पर क्लिक करें। अगर वह आखिरी टैब था जिसे आप देख रहे थे, तब भी उसे चुना जाएगा, जिससे अपवादों को तोड़ना आसान नहीं होगा।

इससे IntelliJ कोड (या लाइब्रेरी कोड) में उस बिंदु पर टूट जाएगा जहां अपवाद उठाया गया था। विशेष रूप से, आपको अपवाद हैंडलिंग पर एक 'पहला मौका' मिलता है, इससे पहले कि स्टैक को पकड़ा जाए / निष्पादित करने के लिए ब्लॉक की तलाश की जाए।


टीआईपी: जावा लोडिंग कक्षाओं के दौरान आंतरिक रूप से बहुत सारे अपवादों को फेंक देता है, इसलिए सभी अपवादों पर यह ब्रेकिंग काफी थकाऊ बन सकता है। अच्छी खबर यह है कि आप हालत क्षेत्र का उपयोग करके कुछ प्रकार के अपवादों को बाहर कर सकते हैं ।

उदाहरण के लिए:

!(this instanceof java.lang.ClassNotFoundException)

आप ऐसी कई स्थितियों को एक साथ जोड़ सकते हैं &&

यहां छवि विवरण दर्ज करें


9
क्या यह बताने का एक तरीका है "केवल मेरी परियोजना से अपवादों पर ब्रेक (जावा सिस्टम से नहीं)"?
लानत सब्जियां

16
जब तक चयनित ब्रेकपॉइंट हिट नहीं हो जाता है, तब तक इसे न भूलें: - यह एक अद्भुत है। सभी जावा या अन्य पुस्तकालयों को लोड करने और सेट करने के बाद बस अपने कोड में एक ब्रेकपॉइंट सेट करें। फिर ड्रॉपडाउन से अपना ब्रेकपॉइंट चुनें और प्रतीक्षा करें। आपका ब्रेकपॉइंट हिट हो जाएगा, और फिर एक बार जब आप हिट जारी रखेंगे, तो आपका नया कॉट एंड अनकैप्ड एक्सेप्शन फ़िल्टर किक करेगा। :)
लुई सेंट-अमौर

1
ब्रेकपॉइंट संवाद बॉक्स के निचले भाग में "पकड़े गए अपवाद" और "अनकवर्ड अपवाद" दोनों की जांच करना न भूलें।
रॉबिनो

59

में IntelliJ विचार 14 पर जाएँ:

Run -> View Breakpoints -> Check "Java Exceptions Breakpoints" -> Uncheck "Caught Exceptions"

यदि आप अनचेक नहीं करते हैं तो Caught Exceptionsहर बार Java Frameworkआंतरिक अपवाद को फेंकने पर निष्पादन रोक दिया जाएगा ।


1
रन -> ब्रेकप्वाइंट देखें ... -> "जावा एक्सेप्शन ब्रेकप्वाइंट्स" की जांच करें -> "कैच किए गए अपवाद" को अनचेक करें
जोनास

2
दुर्भाग्य से, यह अभी भी "पकड़े गए अपवाद" को अक्षम करने के बाद भी मेरे लिए पकड़े गए अपवादों पर टूट जाता है।
कैरिजनेट

यह बहुत महत्वपूर्ण जानकारी है जो मैं कहूंगा, अन्यथा, यह बिना किसी सूचना मूल्य के एक अपवाद नरक है। मुख्य रूप से जब ग्रेल्स जैसे बड़े फ्रेमवर्क का उपयोग किया जाता है।
डेविड फेरेंस्की रोगोजान

ठीक है, मैंने अपना मन बदल लिया है - पकड़े गए अपवादों के साथ और बिना दोनों विकल्प खराब हैं, क्योंकि आमतौर पर, एक विशिष्ट वेब एप्लिकेशन में, सभी अपवादों को पकड़ा जाता है, वहां एक शीर्ष-स्तरीय कैच ब्लॉक होता है जो सब कुछ पकड़ता है और इसे प्रारूपित करता है। उपयोगकर्ता के लिए प्रस्तुत किया। तो पकड़े गए अपवादों के बिना, यह किसी भी चीज़ पर नहीं टूटता है, उनके साथ, यह एक अनुरोध के दौरान सौ बार टूट जाता है। दोनों बेकार :(
डेविड फेरेन्स्की रोगोजान

कुछ भी बेकार नहीं है, अगर आप इसका उपयोग करना जानते हैं।
एलेसेंड्रो फ्लेटी

12

हाँ वहाँ है। आपको IntelliJ IDEA में ब्रेकपॉइंट संवाद में एक अपवाद ब्रेकपॉइंट (यह "कोई भी अपवाद" हो सकता है) को परिभाषित करने की आवश्यकता है।

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


7

यदि आप ऊपरी बाएं कोने में छोटे "+" चिह्न पर क्लिक करते हैं, तो आप एक नया ब्रेकपॉइंट जोड़ सकते हैं। यदि आप अपवाद विराम बिंदु का चयन करते हैं, तो आपको एक छोटा संवाद मिलता है जहां आप अपवाद वर्ग में प्रवेश कर सकते हैं (यदि आप सभी अपवादों को नहीं तोड़ना चाहते हैं)।


0

रन > व्यू ब्रेकप्वाइंट के तहत इंटेलीज पर नए संस्करणों में ।

फिर जावा एक्सेप्शन ब्रेकप्वाइंट्स की जांच करें -> कोई अपवाद

अपवादों को डीबग करने का एक अच्छा तरीका अपने मुख्य ऐप पैकेज और वाइल्ड कार्ड का उपयोग करना है .*। इस तरह से आप अन्य सभी पुस्तकालयों के अपवादों को छोड़ देते हैं, क्योंकि अधिकांश समय आप अपने ऐप द्वारा फेंके गए अपवादों की तलाश में रहते हैं और किसी अन्य पुस्तकालय द्वारा नहीं (जो कि बहुत सारे अपवाद हो सकते हैं)।

एक उदाहरण के रूप में छवि में दिखाया गया है कि मैं com.gs.mercury.*हर बार तोड़ने के लिए उपयोग करता हूं ऐप एक अपवाद फेंकता है। यदि आप अपवादों का उपयोग करते हैं तो वे क्या हैं (असाधारण मामलों को संभालने के लिए और सामान्य स्थितियों के प्रवाह को संभालने के लिए नहीं) आप केवल तभी रुकेंगे जब आप लगभग हर समय वांछित अपवाद पर पहुंचेंगे।

पीडी। उत्तर केवल बहुत उपयोगी कैच क्लास फ़िल्टर को इंगित करने के लिए जोड़ा गया ।

ब्रेकप्वाइंट

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.