ప్రధాన కంటెంట్‌కు వెళ్లండి
మాడ్యూల్ 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లోడ్ అవుతోంది...

`safeDivide(a, b)`ని నిర్వచించండి: b అనేది 0 అయితే 'డివిజన్ పర్ జీరో' అనే సందేశంతో లోపాన్ని త్రోసివేయండి, లేకుంటే a/bని తిరిగి ఇవ్వండి.

ఎడిటర్ లోడ్ అవుతోంది…
సూచనను చూపించు

ఒకవేళ (b === 0) కొత్త లోపం ('...') విసిరితే; ఆపై a / bని తిరిగి ఇవ్వండి.

3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది

వ్యాయామం సమీక్షించండి

వ్యాయామం#js.m5.l4.e2
ప్రయత్నాలు: 0లోడ్ అవుతోంది...

`parseJsonSafe(text)`ని నిర్వచించండి: టెక్స్ట్ చెల్లుబాటైతే JSON రిటర్న్ { ok: true, value: <object> }, లేకుంటే { ok: false }. JSON.parseలో ప్రయత్నించండి/క్యాచ్‌ని ఉపయోగించండి.

ఎడిటర్ లోడ్ అవుతోంది…
సూచనను చూపించు

ప్రయత్నంలో JSON.parseని చుట్టండి; క్యాచ్ రిటర్న్‌లో { సరే: తప్పు }.

3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది