2015-03-26 11 views
8

कोणीय के पास $exceptionHandler है। क्या प्रतिक्रिया.जेएस के लिए ऐसा कुछ है?मैं अपवाद कैसे संभाल सकता हूं?

मैं अपनी त्रुटियों को बाहरी API में लॉग करना चाहता हूं। उदाहरण:

उत्तर

15

वहाँ कोणीय में की तरह कोई जादू है। यदि कोई त्रुटि नहीं है, तो यह विंडो को हिट होने तक स्कॉप्स को प्रचारित करता है, और उसके बाद एक त्रुटि ईवेंट उत्सर्जित होता है - प्रतिक्रिया के बिना त्रुटि के समान व्यवहार।

var App = React.createClass({ 
    render: function(){ 
    throw new Error("rawr!"); 
    return <div>Hello, world!</div> 
    } 
}); 

window.addEventListener('error', function(e){ 
    // e instanceof ErrorEvent 
    console.error('caught the error: ' + e.message); 
}); 

chrome console displaying the error

आप क्रॉस ब्राउज़र समर्थन में देखो, तो कृपया इस उत्तर को अपडेट करने या प्रशंसा पत्र लिखकर कोई टिप्पणी दें।

इसे कंसोल (जो पहले से डिफ़ॉल्ट रूप से होता है) पर लॉग इन करने के बजाय, आप इसे कहीं भी भेज सकते हैं।

कुछ अन्य ढांचे के विपरीत, एक त्रुटि त्रुटि हमेशा आपके कोड में एक बग है। यह कभी नहीं होना चाहिए।

तुम भी स्पष्ट रूप से श्रृंखला के अंत करने के लिए एक .catch(reportError) जोड़ने, और जाँच है कि यह एक लेखन त्रुटि या ReferenceError है द्वारा वादा त्रुटियों में से कुछ विशेष हैंडलिंग करने की ज़रूरत हो सकती है।

+0

यह बहुत अच्छा था! स्पष्ट और विस्तृत स्पष्टीकरण के लिए धन्यवाद :) – Eric

+0

'नई त्रुटि फेंक दें ("rawr!");' डरावनी: डी – developerbmw

+5

+1 "कुछ अन्य ढांचे के विपरीत, आपके कोड में एक त्रुटि त्रुटि हमेशा एक बग है। यह कभी नहीं होना चाहिए । " :) – macou

0

जबकि @ FakeRainBrigand का उत्तर जावास्क्रिप्ट में सामान्य 'असीमित त्रुटि' रिपोर्टिंग तंत्र की तंत्र को समझने में एक बहुत अच्छा प्रारंभिक बिंदु देता है, मुझे लगता है कि अधिकांश ऐप्स सीडीएन का उपयोग करके अपने जेएस बंडलों की मेजबानी करते हैं जहां आप बिना किसी त्रुटि के त्रुटियों को पकड़ सकते हैं "window.addEventListener ('त्रुटि', एफएन)" तंत्र।

ताकि आप "window.addEventListener ('त्रुटि', एफ एन)" तंत्र के साथ ध्यान में न आया त्रुटियों को पकड़ने का आनंद ले सकते अपनी स्क्रिप्ट टैग को

रखें crossorigin विशेषता crossorigin सीमाओं के बारे में जानें।

मामलों में जहां आप सिर्फ CORS सेटिंग्स के साथ चारों ओर नहीं मिल सकता है में

प्रतिक्रिया 16: निर्मित त्रुटि निवारण तंत्र प्रदान करता है। Error Boundaries in React here

प्रतिक्रिया 15 या उससे नीचे: यहां त्रुटियों को पकड़ने का एकमात्र तरीका हर renders/घटकों के आसपास प्रयास-पकड़ ब्लॉक जोड़कर है। सौभाग्य से हमारे पास एक एनपीएम मॉड्यूल है - react-guard जो वास्तव में हमारे लिए प्रतिक्रिया को पकड़कर करता है।

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

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