ماڈیول اسباق (4/4)
کوشش / پکڑنا / پھینکنا
جاوا اسکرپٹ میں ایک خرابی ایک قدر ہے (عام طور پر ایک Error آبجیکٹ) جو معمول کے بہاؤ میں خلل ڈالتی ہے۔
اور کال اسٹیک کو بلبلا کرتا ہے جب تک کہ کوئی اسے پکڑ نہ لے۔ اس کیس کو ہینڈل کرنے کی تشکیل ہے۔
try / catch۔
غلطی پھینکنا: throw
function dividi(a, b) {
if (b === 0) {
throw new Error('Divisione per zero');
}
return a / b;
}throw موجودہ فنکشن کو فوری طور پر روکتا ہے۔
پکڑنا: try / catch
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 (اختیاری)
کوڈ جو ہمیشہ چلتا ہے، غلطی یا نہیں۔ وسائل کو بند کرنے کے لیے مفید:
try {
// ... operazione rischiosa
} catch (err) {
// ... log
} finally {
// ... pulizia (sempre eseguita)
}اسے کب استعمال کرنا ہے (اور کب نہیں)
- ہاں: I/O آپریشنز (
JSON.parseناقابل اعتماد ان پٹ پر،fetch، ڈسک تک رسائی)، تبادلوں جو ناکام ہو سکتا ہے. - شاید نہیں: عام بہاؤ کے لیے۔ اگر آپ جانتے ہیں کہ کوئی ان پٹ غلط ہو سکتا ہے، تو اسے چیک کرنا بہتر ہے۔
پھینکنے اور پکڑنے کے بجائے
ifکے ساتھ۔
// 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: '...' }اسے آزمائیں
'safeDivide(a, b)' کی وضاحت کریں: اگر b 0 ہے تو 'Divisione per zero' کے پیغام کے ساتھ ایک ایرر پھینک دیں، بصورت دیگر a/b واپس کریں۔
اشارہ دکھائیں۔
اگر (b === 0) نئی خرابی پھینک دیں ('...')؛ پھر واپس a / b.
3 کوششوں کے بعد حل دستیاب ہے۔
ورزش کا جائزہ لیں۔
`parseJsonSafe(text)` کی وضاحت کریں: اگر متن درست ہے JSON واپسی { ok: true, value: <object> }، بصورت دیگر { ok: false }۔ JSON.parse پر ٹرائی/کیچ استعمال کریں۔
اشارہ دکھائیں۔
کوشش میں JSON.parse لپیٹیں؛ کیچ ریٹرن میں { ٹھیک ہے: غلط}۔
3 کوششوں کے بعد حل دستیاب ہے۔