مستثنیات رن ٹائم یا مرتب وقت کے دوران غیر معمولی حالات ہیں۔ C ++ میں ایک انتہائی ضروری تصور ہے۔ یہ مضمون آپ کو C ++ میں مختلف اقسام کے ساتھ مستثنیٰ ہینڈلنگ کا تعارف کرائے گا۔
اس مضمون میں مندرجہ ذیل نکات کا احاطہ کیا جائے گا ،
تو آئیے ہم شروع کریں ،
C ++ میں مستثنیات ہینڈلنگ
مستثنیات کی اقسام
استثنا کی دو قسمیں ہیں ،
فبونیکی ریورسیو سی ++
رن ٹائم استثناء
رن اپ ٹائم کے دوران پکڑی جانے والی یہ ایک رعایت ہے۔
مرتب وقت استثناء
یہ ایک استثنا ہے جس کو مرتب وقت کے دوران پکڑا گیا۔
C ++ میں اس استثناء ہینڈلنگ مضمون کے ساتھ آگے بڑھ رہے ہیں ،
استثناء ہینڈلنگ کیا ہے؟
نقائص کسی پروگرام کو عام کرنے میں خلل ڈالتے ہیں۔ استثناء کو سنبھالنا بہت ضروری ہے ، اور یہ غلطیوں یا مستثنیات سے نمٹنے کا عمل ہے۔ اس سے یہ یقینی بنتا ہے کہ پروگرام کی رعایت مستثنیات سے متاثر نہیں ہوتی ہے اور پروگرام پر عمل درآمد میں کوئی مسئلہ پیدا کیے بغیر آہستہ آہستہ ان کو سنبھالتی ہے۔
جب آپ استثناء کو سنبھالنے پر غور کرتے ہیں تو ، اس کے ساتھ تین شرائط وابستہ ہوتی ہیں ،
کوشش کریں
اس بلاک کے اندر کا کوڈ ایک آزمائشی کوڈ کی طرح ہے ، جو استثناء رکھ سکتا ہے۔ یہ رعایت کیچ بلاک کے اندر پکڑی گئی ہے۔
پکڑو
اس بلاک میں کوڈ پر عمل درآمد ہوتا ہے جب کوشش بلاکس میں کوڈ استثناء ڈالتا ہے۔
پھینک دو
اس مطلوبہ الفاظ کا استثناء استعمال کرنے کے لئے استعمال کیا جاتا ہے جب اس کا سامنا کرنا پڑتا ہے۔ استثناء استثناء ہینڈلر کو بھیجا جاتا ہے۔
نحو:
ٹرائی بلاک کے اندر موجود کوڈ کو پھانسی دے دی گئی ہے۔ اگر کوئی خرابی پیدا ہوتی ہے تو ، پھر مطلوبہ الفاظ کے تھرو نے رعایت ہینڈلر کی رعایت پھینک دی ، یعنی کیچ بلاک۔ اس کے بعد کیچ بلاک نے اس کوڈ کو پھانسی دے دی ، جو اس کے بلاک کے اندر ہے ، اس طرح اس سے استثناء کو سنبھالا گیا۔
آئیے سی ++ میں استثنائی ہینڈلنگ کے لئے نمونہ کوڈ پر ایک نظر ڈالیں
نمونہ کوڈ
# ٹائم تھرو & ldquoexception & rdquo} کیچ (استثناء) {// کوڈ کے لئے کوڈ} INT اہم () {انٹ ایکس ایکس = 1 ٹریٹ {cout کے لئے نام کی جگہ std کوشش {// کوڈ کا استعمال شامل کریں<< 'Try Block: '<آؤٹ پٹ:
وضاحت
یہ پروگرام استثناء کی نمائش کا مظاہرہ کرتا ہے۔ ہمارے پاس ایک متغیر ایکس ہے ، جس کی قیمت 1 رکھی گئی ہے۔ پھر ہمارے پاس ٹرائی بلاک شروع ہوگا۔ اس بلاک میں ، x کی حالت کے ساتھ ہمارے پاس ایک بیان ہے<10.
ہمارے معاملے میں ، حالت صحیح ہے کیونکہ ایکس ایک ہے۔ اس کے بعد پروگرام ایک رعایت پھینک دیتا ہے اور بلاک کو پکڑنے کے لئے کنٹرول شفٹوں میں بدل جاتا ہے۔ ہم کیچ پارٹ میں شرط پر عمل کرتے ہیں اور بلاک سے باہر نکلتے ہیں۔
کیچ (()) لاگت<< 'Default Exceptionn'<آخر میں ، ہم کیچ بلاک اور ایگزٹ پروگرام کے بعد باقی بیانات پر عملدرآمد کرتے ہیں۔
ایک سے زیادہ کیچ بیان ہوسکتا ہے ، ممکنہ مستثنیات کی تعداد پر منحصر ہے۔
C ++ میں اس استثناء ہینڈلنگ مضمون کے ساتھ آگے بڑھ رہے ہیں ،
کیچ بلاک کی ناکامی
پچھلے پروگرام پر غور کریں ، اگر ایکس کی بجائے تھرو کی ورڈز 'اے بی سی' پھینک دیتے ہیں تو ، کیچ فنکشن اسے سنبھال نہیں پائے گا۔ یہ ایک غلطی دکھائے گا ،
ایسی صورت میں ہمارا جیتنے والا خامی پیغام آویزاں ہوسکتا ہے۔
اس کو حل کرنے کے ل we ، ہمیں اس طرح کے امور کو ہینڈل کرنے کیلئے کوڈ میں ڈیفالٹ کیچ فنکشن شامل کرنے کی ضرورت ہے۔
# نام کی جگہ ایس ٹی ڈی انٹ مین () {انٹ ایکس ایکس = 1 ٹرائی {کووٹ کا استعمال کرتے ہوئے شامل کریں<< 'Try Block: '<آؤٹ پٹ:
وضاحت:
یہ کوڈ پچھلے کوڈ سے ملتا جلتا ہے۔ صرف تبدیلی یہ ہے کہ پھینک دی گئی استثناء قسم کی ہے۔ اس کے نتیجے میں ہماری کیچ فنکشن بیکار ہے۔ تو ہم نے پہلے سے طے شدہ کیچ فنکشن شامل کیا ہے۔
اگر کیچ بیانات میں سے کوئی مماثل نہیں ہے تو پہلے سے طے شدہ کیچ کو پھانسی دے دی جاتی ہے۔
ایک سے زیادہ کیچ بلاکس
ایک ٹرکس بلاک کے ایک سے زیادہ کیچ بلاکس ہوسکتے ہیں۔
یہاں ایک مثال ہے ،
# نام اسپیس ایس ٹی انٹ ٹیسٹ (انٹ اے) کا استعمال کرتے ہوئے شامل کریں {کوشش کریں {اگر (ایک<0) throw a else throw 'a' }catch(int a){ cout<<'Caught an integer: ' << a<آؤٹ پٹ:
وضاحت:
مذکورہ کوڈ میں ، ہم ایک سے زیادہ کیچ والے بیانات استعمال کرتے ہیں۔ ہمارے پاس ایک فنکشن ٹیسٹ ہے جو استثنا پیدا کرتا ہے۔ پہلے ٹیسٹ کیس میں ، قیمت 10 ہے۔ چونکہ 10 صفر سے زیادہ ہے ، ‘a’ کردار پھینک دیا جاتا ہے اور یہ دوسرے کیچ فنکشن کے ذریعہ پکڑا جاتا ہے۔
دوسری صورت میں ، قیمت 0 سے کم ہے لہذا قیمت -1 پھینک دی جاتی ہے اور یہ پوری عددی رعایت کے ذریعہ پکڑا جاتا ہے
بیس اور ماخوذ طبقے میں رعایت سے نمٹنے:
اگر بیس اور ماخوذ طبقے کی رعایت پکڑی جاتی ہے تو بیس کلاس سے پہلے اخذ کلاس کو پکڑنا ضروری ہے۔
یہاں کچھ مستثنیات ہیں:
std :: استثناء
منطق_کا خطرہ
رن ٹائم خرابی
برا_لوک
برا_کاسٹ
خراب_قصد
اس کے ساتھ ہی ہم اس بلاگ کے اختتام پر پہنچے ہیں۔ مجھے امید ہے کہ آپ کو یہ معلوماتی اور مددگار مل گیا ہے ، اسی طرح کے موضوعات پر مزید سبق حاصل کرنے کے لئے ہم آہنگ رہیں۔ آپ ہمارے تربیتی پروگرام کو بھی چیک کرسکتے ہیں۔o jQuery کے ساتھ اس کی مختلف ایپلیکیشنز کے ساتھ گہرائی سے معلومات حاصل کریں ، آپ کر سکتے ہیں 24/7 مدد اور زندگی بھر تک رسائی کے ساتھ براہ راست آن لائن تربیت کے ل.۔
ہمارے لئے ایک سوال ہے؟ اس بلاگ کے تبصرے سیکشن میں ان کا تذکرہ کریں اور ہم آپ کو واپس ملیں گے۔