जब किसी प्रोग्राम या कोड के किसी हिस्से में कुछ गलत हो या अप्रत्याशित हो, तो उसे बताने के लिए एरर बहुत काम आती है।
ये JavaScript ऑब्जेक्ट होते हैं।
इस ऑब्जेक्ट की मुख्य प्रॉपर्टी message होती है:
const error = new Error('Oops, something went wrong');
console.log(error.message);
// => "Oops, something went wrong"
throw सिंटैक्स का उपयोग करके आप एक एरर फेंक सकते हैं।
throw new Error('Oops');
जब कोई एरर फेंकी जाती है, तो कोड का चलना वहीं रुक जाता है और वह कॉल स्टैक के पहले कैच ब्लॉक से दोबारा शुरू हो जाता है।
try {
throw new Error('Oops');
} catch (error) {
console.log(error.message);
// => "Oops"
}
JavaScript की किसी भी क्लास की तरह, आप extends कीवर्ड का उपयोग करके Error की सबक्लास बना सकते हैं और अपने कस्टम एरर तैयार कर सकते हैं।
instanceof सिंटैक्स यह जाँचता है कि पकड़ी गई एरर Error की किसी खास सबक्लास का इंस्टेंस है या नहीं।
class CustomError extends Error {}
try {
// ... Code that may throw an error
} catch (error) {
if (error instanceof CustomError) {
console.log('The error thrown is an instance of the CustomError');
}
}
Error ऑब्जेक्ट के अलावा भी कई बिल्ट-इन एरर ऑब्जेक्ट होते हैं। इनके बारे में आप यहाँ और जान सकते हैं।
आप एक ऐसी क्लास बनाकर अपना कस्टम एरर टाइप भी बना सकते हैं जो बिल्ट-इन एरर टाइपों में से किसी एक की सबक्लास हो।
class MyCustomError extends Error {}
throw सिंटैक्स का उपयोग आमतौर पर एक एरर ऑब्जेक्ट फेंकने के लिए किया जाता है, लेकिन JavaScript लचीला है और आपको एक string, एक null या किसी भी प्रिमिटिव टाइप की वैल्यू फेंकने देता है।
हालाँकि यह JavaScript में मानक नहीं है, फिर भी JavaScript के ज़्यादातर वातावरण एरर ऑब्जेक्ट पर stack प्रॉपर्टी देते हैं, जिससे आपको फेंकी गई एरर का स्टैक ट्रेस मिल जाता है।