जावास्क्रिप्ट: क्या क्रोम को सभी त्रुटियों पर तोड़ने का एक तरीका है?


258

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

उदाहरण के लिए, निम्नलिखित कोड वाले पृष्ठ को लोड करते समय, मैं चाहूंगा कि क्रोम लाइन पर टूट जाए foo.bar = 42। इसके बजाय, "सभी अपवादों पर विराम" को सक्षम करने पर भी, मुझे अपेक्षित परिणाम नहीं मिलता है।

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
        <script type="text/javascript">

            function doError() {
                foo.bar = 42;
            }

            window.onload = function() {
                try {
                    doError();
                } catch (e) {
                    console.log("Error", e);
                }
            }
        </script>
    </head>
    <body>
    </body>
</html>

आप इस पृष्ठ पर या इस jsFiddle का उपयोग करके ऊपर चिपकाए गए कोड को आज़मा सकते हैं ।


आप किस प्रकार की त्रुटियों के बारे में सोच रहे हैं?
मैथ्यू Crumley

1
किसी भी त्रुटि, कहते हैं: एक अपरिभाषित चर (के रूप में console.log(gaga)) या एक अपरिभाषित संपत्ति (के रूप में window.foo.bar) के लिए एक संदर्भ ।
avernet

2
उन लोगों को अपवाद फेंक देना चाहिए। "अपवादों पर विराम" विकल्प मेरे लिए काम करता है। केवल त्रुटियों के बारे में सोच सकता हूं कि काम नहीं करेगा वाक्यविन्यास त्रुटियां हैं, लेकिन कोड निष्पादित होने से पहले ऐसा होता है।
मैथ्यू Crumley

1
हां, मैं अब यह कोशिश कर रहा हूं, और यह लगता है कि त्रुटि कहां है। मैंने कुछ दिन पहले ऐसा किया था, और जहां कोड में त्रुटि है, वहां तोड़ने के बजाय, यह टूट रहा था जहां त्रुटि के कारण अपवाद पकड़ा जा रहा था, स्टैक को ऊपर ले जाएं। जाओ पता लगाओ!
17

जवाबों:


210

संपादित करें: मैंने जिस मूल लिंक के साथ उत्तर दिया वह अब अमान्य है । नया URL 2016-11-11 के अनुसार https://developers.google.com/web/tools/chrome-devtools/javascript/add-breakpoints#exception होगा ।

मुझे लगता है कि इस सवाल का जवाब है, लेकिन यह अब सटीक नहीं है। ऊपर दिए गए लिंक का उपयोग करें ^


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

Chrome ने अब कुछ अन्य वास्तव में उपयोगी ब्रेकपॉइंट क्षमताओं को भी जोड़ा, जैसे कि डोम परिवर्तन या नेटवर्क घटनाओं पर ब्रेक लगाना।

आम तौर पर मैं एक प्रश्न का फिर से उत्तर नहीं देता, लेकिन मेरे पास एक ही सवाल था, और मुझे यह अब गलत जवाब मिला, इसलिए मुझे लगा कि मैं इस जानकारी को उन लोगों के लिए डालूंगा जो बाद में खोज करने के लिए आए थे। :)


1
ब्रायन, धन्यवाद, यह वास्तव में अब काम कर रहा है। यह सुविधा पिछले साल के फरवरी में उपलब्ध थी, जब मैंने इसे पोस्ट किया था, लेकिन यह ठीक से काम नहीं कर रहा था, जबकि यह अब ठीक काम करता है। प्रतिक्रिया के लिए धन्यवाद।
औसतनेट

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

2
हाय एंड्री, मैं क्रोम कैनरी देख रहा हूं और मुझे अभी भी वहां बटन दिखाई देता है। यह बाईं ओर से चौथा बटन है, जैसा कि d.pr/i/DHwT पर दिखाया गया है - एक बार क्लिक करें और यह सभी अपवादों पर विराम में चला जाता है, जहां एक दूसरा क्लिक इसे बिना किसी अपवाद के विराम देने के लिए ले जाएगा। एक तीसरा क्लिक रुकने के डिफ़ॉल्ट पर लौटता है।
ब्रायन अर्नोल्ड सिंक्लेयर

लिंक टूट गया है मुझे डर है :(
रिक

1
टिप्पणी को जल्द न देखने के लिए क्षमा याचना! ऐसा प्रतीत होता है कि Developers.google.com/web/tools/chrome-devtools/javascript/… में पहले से सामग्री का सार है। अगर मैं कर सकता हूं, तो मैं मूल उत्तर में भी संशोधन करूंगा।
ब्रायन अर्नोल्ड सिंक्लेयर

298

मुझे इसे पाने में परेशानी हुई इसलिए मैंने अलग-अलग विकल्प दिखाते हुए चित्र पोस्ट किए:

Chrome 75.0.3770.142 [29 जुलाई 2018]

कम से कम क्रोम 38.0.2125.111 [11 दिसंबर 2014] के बाद से बहुत समान यूआई

टैब में Sources:

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

जब बटन सक्रिय होता है, तो आप Pause On Caught Exceptionsनीचे दिए गए चेकबॉक्स के साथ कर सकते हैं: यहां छवि विवरण दर्ज करें


पिछला संस्करण

Chrome 32.0.1700.102 [03 फ़ेब 2014]

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

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

क्रोम 27.0.1453.93 स्थिर

डिबग विकल्प


22
मुझे सीधे उनके डॉक्स में इसे जोड़ने के लिए फेसबुक की प्रशंसा करनी होगी। +1
jimm101

1
लोगों को ध्यान देने के लिए, बटन बस छिपाएंगे यदि साइडबार का विस्तार नहीं किया गया है, तो कोई संकेत नहीं है कि वे वहां हैं।
एरिक मेजरस

17

यह अब क्रोम में "सभी अपवादों पर रोकें" बटन द्वारा समर्थित है।

इसे सक्षम करने के लिए:

  • Chrome डेवलपर टूल में "स्रोत" टैब पर जाएं
  • "सभी अपवाद मोड पर रोकें" पर स्विच करने के लिए विंडो के नीचे स्थित "पॉज़" बटन पर क्लिक करें।

ध्यान दें कि इस बटन में कई राज्य हैं। के बीच स्विच करने के लिए बटन पर क्लिक करते रहें

  • "सभी अपवादों पर विराम दें" - बटन हल्के नीले रंग का है
  • "बिना किसी अपवाद के विराम दें", बटन बैंगनी रंग का है
  • "अपवादों पर रोक नहीं" - बटन रंगीन ग्रे है

1

बस किसी भी त्रुटि के बारे में एक अपवाद फेंक देंगे। एकमात्र त्रुटि जिसके बारे में मैं सोच सकता हूं कि "अपवादों पर विराम" विकल्प के साथ काम नहीं करेगा, सिंटैक्स त्रुटियां हैं, जो किसी भी कोड के निष्पादित होने से पहले होती हैं, इसलिए वैसे भी ठहराव के लिए कोई जगह नहीं है और कोड में से कोई भी नहीं चलेगा।

जाहिर तौर पर, क्रोम अपवाद पर रोक नहीं देगा अगर यह एक कोशिश-पकड़ ब्लॉक के अंदर है। यह केवल बिना किसी अपवाद के रुकता है। मुझे इसे बदलने का कोई तरीका नहीं पता है।

यदि आपको यह जानने की आवश्यकता है कि अपवाद किस लाइन पर हुआ था (तब आप अपवाद को फिर से सेट कर सकते हैं यदि अपवाद प्रतिलिपि प्रस्तुत करने योग्य है), Errorकैच ब्लॉक को दी गई वस्तु में एक stackसंपत्ति होती है जो दिखाती है कि अपवाद कहां हुआ है।


मैथ्यू, मैंने उस मामले के समान कुछ "पुन: पेश" किया (अद्यतन प्रश्न देखें)। किसी तरह, मुझे उस त्रुटि पर ब्रेक करने के लिए डिबगर नहीं मिलता है। क्या आपको पता है कि यह क्रोम के साथ काम क्यों नहीं करेगा (यह "सभी त्रुटियों पर ब्रेक" सक्षम करते समय फायरबग के साथ करता है)।
औसत

@ मैथ्यू, मैंने यह कहते हुए एक और उत्तर दिया कि यह असंभव है, और इसे उत्तर के रूप में चिह्नित किया। यदि आप या कोई अन्य समाधान ढूंढता है, तो मैं मार्कर को बदल दूंगा।
औसत

1

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


बस पॉज़ बटन वन टाइम पर क्लिक करें (यह ब्लू कलर में होगा) और पॉज़ ऑन कॉच एक्सेप्शन पर विकल्प को चिह्नित न करें। यह सब, यह केवल त्रुटियों पर रोक देगा।
रॉय शोआ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.