जावास्क्रिप्ट में throw new Error और throw someObject का अंतर यह है कि throw new Error पास किए गए एरर को निम्नलिखित फॉर्मेट में लपेटता है:
{
name: 'Error',
message: 'कंस्ट्रक्टर में पास किया गया संदेश'
}
throw someObject ऑब्जेक्ट को जैसा है वैसा ही फेंकता है और try ब्लॉक से आगे कोड एक्जीक्यूशन की अनुमति नहीं देता - यानी throw new Error जैसा ही व्यवहार करता है।
व्यावहारिक अंतर
// throw new Error - स्टैंडर्ड एरर ऑब्जेक्ट
throw new Error('कुछ गलत हुआ');
// स्टैक ट्रेस शामिल होता है
// name: "Error", message: "कुछ गलत हुआ"
// throw ऑब्जेक्ट - कस्टम ऑब्जेक्ट
throw { code: 404, message: 'नहीं मिला' };
// कोई स्टैक ट्रेस नहीं (मैन्युअली जोड़ना पड़ता है)
// throw प्रिमिटिव
throw "एरर संदेश"; // काम करता है लेकिन अनुशंसित नहीं
throw 404; // काम करता है लेकिन अनुशंसित नहीं
एरर हैंडलिंग में अंतर
try {
throw new Error('सर्वर एरर');
} catch (e) {
console.log(e.name); // "Error"
console.log(e.message); // "सर्वर एरर"
console.log(e.stack); // स्टैक ट्रेस उपलब्ध
}
try {
throw { status: 500, msg: 'सर्वर एरर' };
} catch (e) {
console.log(e.status); // 500
console.log(e.msg); // "सर्वर एरर"
console.log(e.stack); // undefined - कोई स्टैक ट्रेस नहीं
}
सिफारिश: हमेशा Error (या इसके सबक्लास जैसे TypeError, ReferenceError) का उपयोग करें ताकि स्टैक ट्रेस और डीबगिंग जानकारी मिले।