प्रोटोटाइप संस्करण 1.6.0.2 का उपयोग करना।प्रोटोटाइप कॉलबैक फ़ंक्शन अपवादों को निगलने
मुझे एक आम समस्या है जहां कॉलबैक फ़ंक्शन में फेंकने पर अपवादों को निगल लिया जा रहा है, आमतौर पर जब मैं Ajax.Request
कॉल पर प्रतिक्रिया को संभालने का प्रयास कर रहा हूं।
HTML मार्कअप:
<input type="button" id="myButton" value="Press Me" />
जावास्क्रिप्ट: यहाँ एक सरल उदाहरण है
MYSITE = {};
document.observe("dom:loaded", function() {
// Set up our helper object
MYSITE.pageHelper = new MYSITE.PageHelper();
});
MYSITE.PageHelper = function() {
console.log("PageHelper called.");
$("myButton").observe("click", this.makeCall.bindAsEventListener(this));
};
MYSITE.PageHelper.prototype.makeCall = function() {
console.log("Make call.");
new Ajax.Request(
"remoteCall.cfm",
{
method: 'get',
parameters: "",
onComplete: this.handleCallback.bindAsEventListener(this)
});
};
MYSITE.PageHelper.prototype.handleCallback = function(resp) {
console.log("Start callback processing...");
var x = missingVar + "text"; // This line generates an exception...
console.log("Finished callback processing.");
};
ठीक है, तो मुद्दा यह है कि अगर आप Firebug के साथ फ़ायरफ़ॉक्स में इस कोड को चलाने के कोई अपवाद नहीं उत्पादन होगा अपमानजनक रेखा के लिए - यह निगल लिया गया है। Gulp। इन्हें पकड़ने का एकमात्र तरीका है (कहें कि मैं डिबगिंग कर रहा हूं) कॉलबैक फ़ंक्शन की सामग्री को एक प्रयास/पकड़ में लपेटना है। उदाहरण के लिए:
MYSITE.PageHelper.prototype.handleCallback = function(resp) {
try {
console.log("Start callback processing...");
var x = missingVar + "text"; // This line generates an exception...
console.log("Finished callback processing.");
} catch (e) {
console.log(e);
}
};
क्या कोई और इस मुद्दे पर कभी आया है? वहाँ कोई काम-आसपास है?
अग्रिम धन्यवाद!
मुझे लगता है कि आपके द्वारा उद्धृत कोड केवल अजाक्स घटनाओं के लिए काम करता है, न कि सरल ऑनक्लिक प्रकार की घटनाओं के लिए, जिन पर सवाल पूछा गया है। –
यह 'समाधान' है! आपको अजाक्स को लागू करना चाहिए। रेस्पॉन्डर -> उपरोक्त वर्णित अपवाद विधि पर। –
यह उत्कृष्ट है, सभी स्रोतों के साथ इसे अच्छी तरह से रखने के लिए धन्यवाद – febs