मैं jQuery पर पास किए गए कॉलबैक से फेंकने वाले अपवादों को पकड़ना चाहता हूं (या तो click
जैसे ईवेंट हैंडलर या then
या always
जैसे jqXHR विधियों के लिए)।jQuery को पास किए गए कॉलबैक में फेंकने वाले अपवादों को कैसे पकड़ें?
मैं दो विकल्प की पहचान की है:
window.onerror
हैंडलर - यह केवल एक आंशिक समाधान है क्योंकि यह एंड्रॉयड पर समर्थित नहीं है जो मेरे लक्ष्य प्लेटफार्मों में से एक है- प्रत्येक व्यक्ति कॉलबैक के भीतर से निपटने अपवाद है - बिल्कुल DRY नहीं!
एकमात्र अन्य चीज जो मैं सोच सकता हूं वह jQuery विधियों को ओवरराइड कर रहा है लेकिन जब भी मैं jQuery को अपग्रेड करता हूं तो समस्याएं हो सकती हैं। AJAX हैंडलर के लिए, मैं संभवतः $ .ajaxSetup का उपयोग कर सकता हूं (Exceptions thrown in jQuery AJAX callbacks swallowed? के उत्तर के अनुसार) लेकिन मुझे यकीन नहीं है कि मुझे सबकुछ पकड़ने की अनुमति मिलेगी।
क्या कोई अन्य विकल्प हैं?
function cbWrapper(fn) {
return function() {
try {
return(fn.apply(this, arguments));
} catch(e) {
// handle all your exceptions here
}
};
}
इसलिए, जब आप के बजाय वास्तविक कॉलबैक पास करने का, एक अजाक्स कॉल करने के लिए एक कॉलबैक पारित करने के लिए जाते हैं, आप cbWrapper(callback)
पारित: