मुख्य सामग्री पर जाएं
मॉड्यूल 5 · पाठ 4 का 4पाठ्यक्रम में 20/32~12 min
मॉड्यूल पाठ (4/4)

कोशिश करें/पकड़ें/फेंकें

जावास्क्रिप्ट में एक त्रुटि एक मान है (आमतौर पर एक Error ऑब्जेक्ट) जो सामान्य प्रवाह को बाधित करता है और कॉल स्टैक को तब तक बुलबुला बनाता है जब तक कोई उसे पकड़ न ले। इस मामले को संभालने का निर्माण है try / catch.

एक त्रुटि फेंकना: throw

JS
function dividi(a, b) {
  if (b === 0) {
    throw new Error('Divisione per zero');
  }
  return a / b;
}

throw वर्तमान फ़ंक्शन को तुरंत बाधित करता है।

कैचिंग: try / catch

JS
try {
  const r = dividi(10, 0);
  console.log('ok', r);
} catch (err) {
  console.log('errore:', err.message); // 'errore: Divisione per zero'
}

// Il programma continua qui, anche se c'è stato un errore.

try के अंदर सब कुछ निष्पादित है; यदि कोई त्रुटि उत्पन्न होती है (throw के माध्यम से या किसी भी ऑपरेशन द्वारा विफल रहता है), नियंत्रण catch ब्लॉक पर चला जाता है। catch (...) के बाद वाले वेरिएबल को त्रुटि प्राप्त होती है।

finally (वैकल्पिक)

कोड जो हमेशा चलता है, त्रुटि हो या नहीं। संसाधनों को बंद करने के लिए उपयोगी:

JS
try {
  // ... operazione rischiosa
} catch (err) {
  // ... log
} finally {
  // ... pulizia (sempre eseguita)
}

इसका उपयोग कब करें (और कब नहीं)

  • हां: I/O संचालन (अविश्वसनीय इनपुट पर JSON.parse, fetch, डिस्क एक्सेस), रूपांतरण जो विफल हो सकता है.
  • शायद नहीं: सामान्य प्रवाह के लिए। यदि आप जानते हैं कि कोई इनपुट अमान्य हो सकता है, तो उसे जांचना बेहतर है फेंकने और पकड़ने के बजाय if के साथ।
JS
// Tipico: parsing JSON difensivo
function parseJsonSafe(text) {
  try {
    return { ok: true, value: JSON.parse(text) };
  } catch (err) {
    return { ok: false, error: err.message };
  }
}

parseJsonSafe('{"a":1}'); // { ok: true, value: {a:1} }
parseJsonSafe('non json'); // { ok: false, error: '...' }

इसे अजमाएं

व्यायाम#js.m5.l4.e1
प्रयास: 0लोड हो रहा है...

`सेफडिवाइड(ए, बी)` को परिभाषित करें: यदि बी 0 है तो 'डिवीजन प्रति जीरो' संदेश के साथ एक त्रुटि डालें, अन्यथा ए/बी लौटाएं।

संपादक लोड हो रहा है...
संकेत दिखाएँ

यदि (बी === 0) नई त्रुटि फेंकें ('...'); फिर ए/बी लौटाएं।

3 प्रयासों के बाद समाधान उपलब्ध है

व्यायाम की समीक्षा करें

व्यायाम#js.m5.l4.e2
प्रयास: 0लोड हो रहा है...

`parseJsonSafe(text)` को परिभाषित करें: यदि टेक्स्ट वैध है तो JSON लौटाएं { ठीक: सत्य, मान: <ऑब्जेक्ट> }, अन्यथा { ठीक: गलत }। JSON.parse पर प्रयास/पकड़ का उपयोग करें।

संपादक लोड हो रहा है...
संकेत दिखाएँ

JSON.parse को प्रयास में लपेटें; कैच रिटर्न में { ठीक: गलत }।

3 प्रयासों के बाद समाधान उपलब्ध है