2010-06-22 20 views
6

मैं आईई और मोज़िला के साथ काम कर रहा एक त्रुटि संदेश बनाते हैं। सफारी, क्रोम और ओपेरा के साथ नहीं चल रहा है।खिड़की। सफारी (जावास्क्रिप्ट) में आतंक

लेकिन मुझे इसका उपयोग करने की आवश्यकता है। कृपया इसे करने के लिए मुझे सही तरीका दें।

<script language="javascript" type="text/javascript"> 
window.onerror = function(msg, url, line) 
{ 
    document.write("Message\t = "+msg + "<br/>Location\t = " + url + "<br/>Line No.\t = " + line + "<br/>Error No.\t = " + this.err.number); 
} 
this.err = Error(12,"My Own Error"); 
throw this.err; 
</script> 

========================================== 
Internet Explorer: 

My Error 
Message = My Own Error 
Location = http://localhost/practice/JavaScript/window.errors.php 
Line No. = 8 
Error No. = 12 
================================================ 
Mozilla FireFox: 

My Error 
Message = Script error. 
Location = My Own Error 
Line No. = 0 
Error No. = undefined 
===================================================== 
Safari, Chrome, Opera: 

My Error 

मोज़िला गलत जानकारी देते हैं। मैं क्या करूं?

+2

* (संदर्भ) * http://www.quirksmode.org/dom/events/error.html यह घटना वास्तव में आईई और एफएफ पर बहुत बुरी तरह समर्थित है; सुनिश्चित नहीं है कि इसके बारे में कुछ भी किया जा सकता है या नहीं। –

उत्तर

5

ओपेरा window.onerror का समर्थन नहीं करता है। क्रोम इसका समर्थन करता है, लेकिन त्रुटियों पर नहीं जो आप स्वयं फेंकते हैं। Error() के अलावा त्रुटि ऑब्जेक्ट्स का उपयोग करते समय यह इंटरनेट एक्सप्लोरर के बारे में भी सच है, उदाहरण के लिए TypeError()। क्रोम लाइन और फ़ाइल तर्क प्रदान नहीं करता है।

आपको window.onerror पर भरोसा करने के बजाय try...catch कथन के साथ किसी भी अपवाद को सही ढंग से पकड़ना होगा।

+7

बिंदु उन अपवादों/त्रुटियों को पकड़ना है जिन्हें आप फेंकने वाले नहीं हैं, लेकिन जो पर्याप्त जटिल जेएस में होने की संभावना है (उदाहरण के लिए, उपयोगकर्ता को एक अच्छा माफी संदेश दिखाने के लिए)। मैं खुद को एक ही समस्या को देख रहा हूं, और क्रोम/सफारी अमान्य संदर्भ त्रुटियों को नहीं पकड़ता है - जो तर्कसंगत रूप से सबसे अधिक बार होते हैं। – sereda

+0

@sereda: तो मुझे डर है कि आप भाग्य से बाहर हैं, जब तक आप कोड के प्रत्येक ब्लॉक को कोशिश करने और पकड़ने के कथन के साथ लपेटना नहीं चाहते हैं (कृपया नहीं :-))। समाधान, ज़ाहिर है, त्रुटि मुक्त कोड लिखना और जितना संभव हो उतना परीक्षण करना है। –

+4

@AndyE आप केवल तीसरे पक्ष के पुस्तकालयों के रूप में आपको बग फ्री कोड के रूप में लिख सकते हैं। उदाहरण के लिए, मैं यहां समाप्त हुआ क्योंकि मुझे छोटी गाड़ी फेसबुक जावास्क्रिप्ट लाइब्रेरी का उपयोग करना है, और अपवाद जो वे फेंक रहे हैं वह कोशिश/पकड़ के माध्यम से भी पकड़ने योग्य नहीं है क्योंकि यह उनके द्वारा नियंत्रित एक संवाद से ट्रिगर होता है। –

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