Python Assertion Error

Python Assertion Error



جب کوئی Python پروگرام چلتے ہوئے کسی غیر متوقع حالت کا سامنا کرتا ہے، تو پروگرام عمل کو روکتا ہے اور ایک استثنا لوٹاتا ہے۔ Python میں، استثنیٰ اور نحو کی خرابیاں غلطیوں کی دو اہم قسمیں ہیں۔ جب Python کوڈ کا ایک ٹکڑا جو مصنوعی طور پر درست ہے ایک خرابی پیدا کرتا ہے، اسے ایک استثناء/غلطی کو بڑھانا کہا جاتا ہے۔ آخری لائن میں خرابی کا پیغام قطعی استثناء کی قسم کی وضاحت کرتا ہے اور ڈیبگنگ میں مدد کے لیے ایک تفصیل فراہم کرتا ہے، اور ایک تیر اس لائن یا مقام کی طرف اشارہ کرتا ہے جہاں استثناء واقع ہوا ہے۔ اچانک پروگرام کریش سے بچنے کے لیے مستثنیات کو پکڑنا اور ان کا نظم کرنا بہت ضروری ہے۔ کوڈ پر عمل کرنے کے لیے ایک مختلف طریقہ استعمال کریں۔ مثال کے طور پر، جب مخصوص استثناء ہوتا ہے۔ یہ ٹیوٹوریل AssertionError پر بات کرے گا اور آپ اسے ازگر میں کیسے حل کر سکتے ہیں۔

Python میں Assertion Error کیا ہے؟

دعوے کی خرابیاں ایک پروگرامنگ کا تصور ہے جو اس وقت ہوتا ہے جب کوئی پروگرامر ماڈیول چلانے سے پہلے کسی معیار یا شرط کو مطمئن کرنے کے لیے استعمال ہونے والے کوڈ کا ایک بلاک لکھتا یا تخلیق کرتا ہے۔ کسی بھی ازگر کی خرابی کی طرح، کنٹرول کو کوڈ کے بعد کی لائن میں منتقل کر دیا جاتا ہے اگر شرط کی وضاحت کی گئی ہو جب دعوی درست قرار دیا گیا ہو۔ اگر یہ غلط ہے، تو دوسری طرف، ایک خرابی یا استثناء اٹھایا جاتا ہے، اور پروگرام کو روک دیا جاتا ہے۔ اسسٹ اسٹیٹمنٹ کو مختلف پروگرامنگ زبانوں میں ان کے مخصوص نحو کے ساتھ استعمال کیا جا سکتا ہے کیونکہ یہ زبان سے آزاد ہے۔ یہ ایک ذیلی کلاس یا Exception class کی ایک مثال ہے۔ Python AssertionError میں درج ذیل نحو ہے:

نحو: شرط شرط، error_message (اختیاری)







مثال

ہم کسی شخص کی عمر بطور ان پٹ درج کریں گے، اور اگر یہ صفر سے کم ہے، تو کنسول ایک دعوے کی خرابی کو بڑھا دے گا۔





اب، اگر ہم 0 سے کم عمر درج کریں تو کیا ہوگا؟





اس طریقہ کا استعمال کرتے ہوئے اپنے کوڈ کو ڈیبگ کرنا آسان ہے، اس طرح پروگرام میں غلطیوں اور بگس کو تلاش کرنا آسان ہو جاتا ہے۔



AssertionError ازگر میں کیسے کام کرتا ہے۔

ازگر کی زبان میں ایک اصرار بیان شامل ہے جو منطقی دعووں کے ساتھ سادہ غلطی کے پیغامات کو پیدا کرنے کے لیے استعمال کیا جا سکتا ہے۔ جب دعویٰ کا بیان ناکام ہوجاتا ہے، تو ایک 'استثنیٰ' AssertionError اٹھایا جاتا ہے۔ Python میں، استثنائی کلاسیں BaseException کلاس سے اخذ کی گئی ہیں۔ BaseException کلاس، جو AssertionError کلاس کی بیس کلاس بھی ہے، وہ جگہ ہے جہاں سے Exception کلاس اخذ ہوتی ہے۔ جب بھی کوئی استعمال کیا جائے تو اسسٹٹمنٹ کی ناکامی سے نمٹنے کے لیے ہمیشہ مناسب استثنیٰ ہینڈلنگ کوڈ ہونا چاہیے۔ Python میں ڈیفالٹ استثنیٰ ہینڈلر پروگرامر کے لکھے ہوئے ایرر میسج کو پرنٹ کرے گا، لیکن ایرر کو بغیر کسی ایرر میسج کے ہینڈل یا حل کیا جا سکتا ہے۔

Python میں AssertionError کو نافذ کرنا

Python میں AssertionError کی کئی مثالیں درج ذیل ہیں:

مثال

اس مثال میں، ہم ایک ایسے پروگرام میں AssertionError ظاہر کرنے کے لیے ایک Python پروگرام لکھیں گے جو دائرے کا رقبہ تلاش کرتا ہے۔

رداس 'r' ویلیو کو پچھلے پروگرام میں کسی فنکشن میں ان پٹ کے طور پر منتقل کیا جاتا ہے جو دائرے کا رقبہ معلوم کرنے کے لیے بنایا گیا ہے۔ اسسٹ اسٹیٹمنٹ کا استعمال اس کے بعد اس بات کا تعین کرنے کے لیے کیا جاتا ہے کہ آیا فراہم کردہ قدر یا رداس 'r' صفر سے نیچے ہے، اور اگر اسے منفی قدر فراہم کی جاتی ہے، تو ایک استثناء اٹھایا جائے گا۔ دائرے کا رقبہ فنکشن کو فراہم کردہ رداس 'r' کی قدر کی بنیاد پر واپس کیا جائے گا۔ سب سے پہلے، فنکشن کو r کی قدر کے ساتھ 3 کے طور پر انجام دیا جاتا ہے۔ AssertionError اس وقت پیدا ہوتا ہے جب ہم 'r' کی منفی قدر استعمال کرتے ہیں، یعنی '-1'۔

آئیے ایک اور مثال کی کوشش کرتے ہیں کہ ایک Assertion غلطی کی موجودگی کو ظاہر کریں۔

مثال

اس مثال میں، پروگرام اس بات کا تعین کرے گا کہ آیا ڈینومینیٹر ویلیو غیر صفر ہے۔

دعوے کی غلطی کا ایرر میسج پچھلے پروگرام میں ظاہر ہوتا ہے۔ ہم نے دو متغیرات (a اور b) بنائے ہیں، اور عددی اقدار متغیرات کی وضاحت کرتی ہیں۔ دوسرا متغیر، یعنی، b کو پھر یہ دیکھنے کے لیے جانچا جاتا ہے کہ آیا یہ اصرار بیان کا استعمال کرتے ہوئے 0 کے برابر نہیں ہے۔ دوسری صورت میں، غلطی کا پیغام پرنٹ کیا جاتا ہے. اگر نہیں، تو پہلے نمبر کو دوسری قدر سے تقسیم کرنے کا نتیجہ ظاہر ہوتا ہے۔ پچھلی تصویر میں، پروگرام کا آؤٹ پٹ ظاہر ہوتا ہے۔

AssertionError کی درخواستیں

دعوے کی غلطی کے دوسرے فائدہ مند استعمال میں شامل ہیں:

  • دعوی پیرامیٹر کی اقدار کا اندازہ کرنے میں مدد کرتا ہے۔
  • دعوے ان پٹ کی قسم کی نگرانی کرنے میں مدد کرتے ہیں اور آیا وہ قدر درست ہے یا نہیں۔
  • مزید برآں، دعوے اس بات کی نشاندہی کرنے میں مدد کرتے ہیں کہ آیا کوئی دوسرا کوڈ ڈویلپر انٹرفیس کا غلط استعمال کر رہا ہے۔
  • دعوے پروگرام کے آؤٹ پٹ کی مسلسل نگرانی میں مدد کرتے ہیں۔

ہم ازگر میں دعویٰ کی غلطیوں سے کیسے بچ سکتے ہیں۔

  1. Python پروگرام میں -O پرچم کو ہر دعوے کے بیان کو غیر فعال کرنے کے لیے استعمال کیا جا سکتا ہے۔ یہ ذہن میں رکھنا ضروری ہے کہ اگر ہم دعوے کے بیانات کو غیر فعال کر دیتے ہیں تو وہ بیانات پر عمل درآمد نہیں کیا جائے گا جو دعویٰ کے بیان کے بعد آتے ہیں۔
  2. ماحولیاتی متغیر دعوے کے بیانات کو بند کرنے کے لیے ایک جھنڈا بھی ترتیب دے سکتا ہے۔ تمام عمل اور ایپلی کیشنز جو ماحول کو استعمال کرتی ہیں یا اس کی وارث ہوتی ہیں اس صورت حال میں متاثر ہوتی ہیں۔
  3. Python میں، دعوے کی غلطیوں کو روکنے کا سب سے آسان طریقہ انہیں دستی طور پر ہینڈل کرنا ہے۔ اگر ہم اس بات کو یقینی بناتے ہیں کہ پروگرام کے کنٹرول کے بہاؤ کو موڑ دیا گیا ہے تاکہ یہ دعوی کے بیانات تک رسائی حاصل نہ کرے، تو دعوی کی غلطیوں کا کوئی امکان نہیں ہے۔

AssertionError کو ہینڈل کرنا

دعوے کے بیان کے علاوہ، ہم درج ذیل طریقوں کا استعمال کرتے ہوئے دعوی کی غلطی کو بھی سنبھال سکتے ہیں:

کوشش کے علاوہ بلاکس کا استعمال کرتے ہوئے دعوے کی غلطی کو ہینڈل کرنا

اصرار کا بیان اس بات کا تعین کرتا ہے کہ آیا قدریں برابر ہیں۔ ٹرائی بلاک AssertionError کی غلطی کو بڑھاتا ہے کیونکہ یہ انٹیجرز برابر نہیں ہیں۔ پرنٹ کمانڈ کو اس کے بعد عمل میں لایا جاتا ہے جب سوائے بلاک نے استثناء کو پکڑ لیا ہے۔ یہاں، استثنائی بلاک سے پرنٹ اسٹیٹمنٹ کا آؤٹ پٹ ظاہر ہوتا ہے۔ raise کلیدی لفظ کو سوائے بلاک میں خرابی کو دوبارہ اٹھانے کے لیے استعمال کیا جا سکتا ہے تاکہ ہم استثنیٰ کے ماخذ کا تعین کر سکیں۔ جب کوئی استثناء ہوتا ہے، کلیدی لفظ 'raise' ایک خرابی پیدا کر دے گا اور پروگرام کو ختم کر دے گا۔ یہ موجودہ استثناء کے ریکارڈ/ٹریک کو برقرار رکھنے یا رکھنے میں مدد کرتا ہے۔

ٹریس بیک ماڈیول کا استعمال کرتے ہوئے Assertion Error کو ہینڈل کرنا

جب کوڈ میں متعدد اصرار بیانات ہوتے ہیں، تو ٹریس بیک ماڈیول درست غلطی کے ماخذ کی شناخت میں مدد کرتا ہے۔

ٹریس بیک ماڈیول کا استعمال کرتے ہوئے، ہمارا پرنٹ اسٹیٹمنٹ پلیس ہولڈرز {} کے ساتھ لکھا جا سکتا ہے۔

مزید برآں، ہم لائن کی پوزیشن، فائل کا نام، طریقہ کا نام، نیز ٹیکسٹ/پیغام کو ذخیرہ کرنے کے لیے دیگر متغیرات کی وضاحت کر سکتے ہیں جہاں استثناء واقع ہوا ہے۔

ٹریس بیک آبجیکٹ کو 'tb' کہا جاتا ہے۔ ہم دو پلیس ہولڈرز استعمال کرتے ہیں: ایک متن کے لیے اور دوسرا پرنٹ اسٹیٹمنٹ میں لائن کی پوزیشن کے لیے۔

بیان کے تین اجزاء 'بڑھائیں' — exc_type، exc_traceback، اور exc_value — sys.exc_info() فنکشن کے ذریعے لوٹائے جاتے ہیں۔

پرنٹ اسٹیٹمنٹ کا استعمال کرتے ہوئے Assertion Error کو ہینڈل کرنا

ایک استثنا کو دستی طور پر ہینڈل کرنے کے لیے، ہم سوائے بلاک کے اندر بیان 'پرنٹ' استعمال کر سکتے ہیں۔

پرنٹ اسٹیٹمنٹ کسی بھی غلطی کے پیغام کو پرنٹ کرتا ہے جو صارف داخل کرتا ہے۔ اس طریقہ کے ساتھ، تکنیکی خرابی صارف کے لیے تشویش کا باعث نہیں ہوگی۔

غلطی کے بجائے، ایک مختصر پیغام ظاہر ہوتا ہے۔

نتیجہ

اس پوسٹ میں، ہم نے سب سے پہلے Python میں مستثنیات کا تعارف دیکھا۔ ہم نے AssertionError پر تبادلہ خیال کیا، یہ کیسے کام کرتا ہے، اور ہم Python میں AssertionError کو کیسے نافذ کر سکتے ہیں۔ ہم نے AssertionError کے کئی فوائد اور ان سے کیسے بچ سکتے ہیں اس کی وضاحت کی۔ اس پوسٹ کے آخری حصے میں، ہم نے دیکھا کہ ہم Try-Except Blocks، ٹریس بیک ماڈیول اور پرنٹ اسٹیٹمنٹ کا استعمال کرتے ہوئے Python میں AssertionError کو کیسے ہینڈل کر سکتے ہیں۔