مرکزی مواد پر جائیں
ماڈیول 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 ہے تو 'Divisione per zero' کے پیغام کے ساتھ ایک ایرر پھینک دیں، بصورت دیگر 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 کوششوں کے بعد حل دستیاب ہے۔