ازگر میں مستثنیات کو کیسے سنبھالیں۔

ازگر میں مستثنیات کو کیسے سنبھالیں۔

استثناء کو سنبھالنا آپ کے پروگرام کے ان حصوں کے لیے غلطی کے پیغامات کو حسب ضرورت بنانے اور ظاہر کرنے کی صلاحیت ہے جو کام کرنے میں ناکام رہتے ہیں۔





چاہے آپ ایک ویب سائٹ بنا رہے ہو ، ایک API ، ایک ماڈیول ، یا کوئی دوسری پروڈکٹ ازگر کا استعمال کرتے ہوئے ، استثناء کو مؤثر طریقے سے سنبھالنے کی آپ کی صلاحیت آپ کو واضح طور پر غلطی کی وجہ بتانے دیتی ہے۔





یہاں ، ہم ایک نظر ڈالیں گے کہ آپ ازگر میں استثناء کو کس طرح سنبھال سکتے ہیں۔





ازگر میں استثناء ہینڈلنگ کیسے کام کرتی ہے۔

جب آپ استثناء پیش کرتے ہیں تو ، آپ ازگر کو کہہ رہے ہیں کہ جب بھی کوڈ کا بلاک فیل ہو جائے تو کوئی پیغام لائیں۔ استثناء کو سنبھالنا کسی کو وزن اٹھانے کے لیے کہنے کی طرح ہے۔ اور اگر وہ نہیں کر سکتے تو انہیں آپ کو بتانا چاہیے۔

ازگر میں استثناء بڑھانے کے لیے ، تاہم ، آپ ازگر کو بتائیں گے کہ کوڈ کا ایک خاص بلاک آزمائیں اور چلائیں۔ اگر وہ بلاک ناکام ہوجاتا ہے تو ، پھر آپ ازگر کو ناکام کوڈ کی وضاحت شدہ استثناء بڑھانے کے لیے کہہ سکتے ہیں۔



آپ کو ازگر پروگرامنگ میں استثنا کب استعمال کرنا چاہئے؟

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

لہذا ، آپ کو استثناء استعمال کرنا چاہئے جب آپ نے اپنے کوڈ کا کافی تجربہ کیا ہو ، اور آپ کو یقین ہو کہ یہ کام کرتا ہے۔ بالآخر ، ان کا استعمال ممکنہ غلطیوں کو سنبھالنے کے لیے کرنا ہے جو صارف کے کوڈ کے بجائے خود ہی پیدا ہو سکتے ہیں۔





دوسرے لفظوں میں ، آپ مستثنیات کو انتباہی آلے کے طور پر استعمال کرسکتے ہیں تاکہ صارفین کو اپنے پروگرام کو استعمال کرنے کے طریقے کی رہنمائی کر سکیں۔

ازگر کے استثناء کو سنبھالنا۔

ازگر میں استثناء کو سنبھالنے کے لیے ، آپ کو پہلے اپنے کوڈ کو a میں لپیٹنے کی ضرورت ہے۔ کوشش کریں ... سوائے بلاک. کبھی کبھار ، آپ کو a شامل کرنے کی ضرورت پڑسکتی ہے۔ آخر میں آپ کی ضروریات پر منحصر ہے ، مزید کارروائیوں کو سنبھالنے کے لیے بیان۔





ازگر استثناء کا کوڈنگ تصور عام طور پر اس طرح لگتا ہے:

try:
'code to be executed'
except:
'error message'

جیسا کہ پہلے ذکر کیا گیا ہے ، آپ استعمال بھی کرسکتے ہیں۔ آخر میں ایک استثناء بلاک میں لیکن کوڈ جو آپ a کے اندر لکھتے ہیں۔ آخر میں شق آزاد ہے اور چلتی ہے چاہے کوئی استثنا ہو یا نہیں۔

جوہر میں ، یہ کام آتا ہے اگر آپ کے پاس کوڈ کا ایک اور بلاک ہے جسے آپ مسلسل چلانا چاہتے ہیں قطع نظر اس کے کہ اندر کیا ہوتا ہے کوشش کریں ... سوائے بلاک.

یہاں ایک مثال ہے:

try:
print(9+6)
except:
print('error message')
finally:
print('please restart')
Output:
15
please restart

مذکورہ کوڈ میں ، براہ مہربانی دوبارہ شروع کریں مسلسل چلتا ہے ، اس سے قطع نظر کہ کوئی استثنا ہے یا نہیں۔

ایک اور حالت بھی ایک کی پیروی کر سکتی ہے۔ سوائے بیان:

try:
C = 2 + B
except:
print('B needs to be defined')
else:
print(u'Added successfully! The result is %s'%(C))
Output: B needs to be defined

اب اسے 'B' کے ساتھ دوبارہ آزمائیں:

try:
B = 5
C = 2 + B
except:
print('B needs to be defined')
else:
print(u'Added successfully! The result is %s'%(C))
Output: Added successfully! The result is 7

مندرجہ بالا مثالیں غیر معیاری مستثنیات ہیں۔ لیکن جب آپ بلٹ ان (وضاحتی) استثناء کو غیر معیاری کے ساتھ جوڑتے ہیں تو آپ زیادہ واضح رعایت حاصل کر سکتے ہیں:

try:
C = 2 + B
except NameError as err:
print(err, ':', 'B needs to be defined, please')
else:
print(u'Added successfully! The result is %s'%(C))
Output: name 'B' is not defined : B needs to be defined, please

مذکورہ بالا استثنا پہلے چیک کرتا ہے کہ آیا a نام کی خرابی۔ میں کوشش کریں بلاک. اس کے بعد یہ معیار پرنٹ کرتا ہے۔ نام کی خرابی۔ پہلے استثناء ('نام' B 'کی وضاحت نہیں کی گئی ہے')۔ اور آپ کی تحریری رعایت کے ساتھ اس کی تائید کرتا ہے ('بی کی وضاحت کی ضرورت ہے ، براہ کرم')۔

متعلقہ: پروگرامنگ کے بنیادی اصول ہر پروگرامر کو معلوم ہونا چاہیے۔

میری ڈسک 100٪ پر کیوں چل رہی ہے

اور اگر آپ مستثنیات کی ایک زنجیر کو سنبھالنا چاہتے ہیں تو ، آپ بھی ساتھ جا سکتے ہیں a کوشش کریں بہت سے کے ساتھ بلاک سوائے بیانات یہ بہت آسان ہے اگر آپ کوشش کریں بلاک میں بہت سے استثناء کی صلاحیت ہے:

try:
B = 5
C = 2 + B
D = float(6)
F = 7/0
except NameError as err:
print(err,':', 'B needs to be defined, please')
except ValueError as val:
print(val,':', 'You can't convert that data')
except ZeroDivisionError as zeroerr:
print(zeroerr,':', 'You can't divide a number by zero')
else:
print(u'Operation successfull! The results are: %s, %s, and %s'%(C, D, F))
Output: division by zero : You can't divide a number by zero

اگر تقسیم درست ہے تو کیا ہوگا؟ مثال کے طور پر ، تبدیل کرنا۔ F = 7/0۔ کے ساتھ اوپر کے کوڈ میں F = 7/5۔ دیتا ہے:

Output: Operation successfull! The results are: 7, 6.0, and 1.4

ازگر میں صارف کی وضاحت شدہ استثناء۔

آپ اپنے استثناء کے ساتھ بھی آ سکتے ہیں اور انہیں بعد میں اپنے پروگرام میں کال کر سکتے ہیں۔ اس سے آپ اپنی رعایت کی ایک مخصوص تفصیل دے سکتے ہیں اور اسے اپنی پسند کے مطابق نام دے سکتے ہیں۔

بہر حال ، ہر صارف کی وضاحت شدہ رعایت (براہ راست یا بالواسطہ) اب بھی بلٹ ان سے آتی ہے۔ رعایت ازگر کی کلاس۔

ذیل میں دیا گیا کوڈ بیس کا حوالہ دیتا ہے۔ رعایت براہ راست کال کرکے رن ٹائم خرابی اس سے:

class connectionError(RuntimeError):
def __init__(self, value):
self.value = value
try:
raise connectionError('Bad hostname')
except connectionError as err:
print(err.value)
Output: Bad hostname

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

متعلقہ: ازگر کے ساتھ باقاعدہ اظہار کے لیے ابتدائی رہنما۔

آپ صارف سے متعین استثنا کو براہ راست اس سے حاصل کر کے بنا سکتے ہیں۔ رعایت بیس کلاس تاہم ، ذیل میں استثناء 5 سے 6 کو کم کرنے سے روکتا ہے اور براہ راست بیس کلاس سے استثنا کو کال کرتا ہے۔

class errors(Exception):
pass
class sixFiveError(errors):
def __init__(self, value, message):
self.value = value
self.message = message
try:
raise sixFiveError(6-5,'This substraction is not allowed')
except sixFiveError as e:
print('There was an error:', e.message)
Output: There was an error: This substraction is not allowed

عملی طور پر ، آپ اس استثناء کو استعمال کرسکتے ہیں جو آپ نے پہلے بیان کیا تھا اسے کسی اور فنکشن میں کال کرکے۔ مثال کے طور پر ، آپ a بنا سکتے ہیں۔ floatError جو صرف دو فلوٹس کے اضافے کی اجازت دیتا ہے:

# First call the base exception classes:
class errors(Exception):
pass
# Next, derive your own exception from the base class:
class FloatError(errors):
def __init__(self, value, message):
self.value = value
self.message = message
# Create a function to add two floats:
def addTwoFloat(a, b):
if (type(a) and type(b)) != float:
raise FloatError(a+b,'Numbers must be float to add')
else:
print(a + b)
addTwoFloat(4, 7)
Output: __main__.FloatError: (11, 'Numbers must be float to add')

کیونکہ اب آپ نے a کی تعریف کی ہے۔ فلوٹ ایرر۔ کلاس ، ازگر اسے اٹھاتا ہے اگر آپ دو کا استعمال کرتے ہوئے غیر فلوٹ لٹریلز کو شامل کرنے کی کوشش کرتے ہیں۔ addtwoFloat فنکشن

آپ پرنٹ کر سکتے ہیں۔ فلوٹ ایرر۔ اسی ازگر کی فائل میں کلاس جہاں آپ نے اسے بنایا ہے تاکہ دیکھیں کہ کیا ہوتا ہے:

print(FloatError)
Output:

فلوٹ ایرر۔ تاہم ، بلٹ ان ازگر استثنا نہیں ہے۔ آپ کال کرکے اس کی تصدیق کرسکتے ہیں۔ فلوٹ ایرر۔ ایک اور تازہ ازگر فائل میں جہاں آپ نے یہ کلاس نہیں بنائی ہے۔

print(FloatError)
Output: NameError: name 'FloatError' is not defined

آپ کو ایک مل جاتا ہے۔ نام کی خرابی۔ کیونکہ ازگر اسے معیاری استثنا کے طور پر تسلیم نہیں کرتا ہے۔

آپ غلطی کی دوسری کلاسوں کو خود متعین کرنے کی کوشش کر سکتے ہیں تاکہ یہ دیکھیں کہ وہ کس طرح کھیلتے ہیں۔

اپنے ازگر کے پروگراموں کو استثناء کے ساتھ زیادہ صارف دوست بنائیں۔

ازگر میں بہت سے معیاری استثناء ہیں۔ لیکن آپ اپنی تعریف بھی کر سکتے ہیں۔ بہر حال ، آپ کے پروگرام کو استعمال کرنے میں آسانی کسی حد تک انحصار کرتی ہے کہ وہ مختلف استثناء کو کس طرح سنبھالتا ہے (چاہے صارف کی وضاحت شدہ ، غیر مخصوص ، یا معیاری)۔

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

بانٹیں بانٹیں ٹویٹ ای میل۔ اپنے ازگر کوڈ کو ڈیبگ کرنے کا طریقہ

اپنے آپ کو اپنے راستے میں ہر ازگر کیڑے کو اسکواش کرنے کے طریقے سے آراستہ کریں۔

اگلا پڑھیں۔
متعلقہ موضوعات۔
  • پروگرامنگ۔
  • ازگر۔
  • کوڈنگ ٹیوٹوریل
مصنف کے بارے میں ادیسو اومیسولا۔(94 مضامین شائع ہوئے)

ادوو کسی بھی سمارٹ ٹیک اور پیداوری کے بارے میں پرجوش ہے۔ اپنے فارغ وقت میں ، وہ کوڈنگ کے ساتھ کھیلتا ہے اور جب وہ بور ہوتا ہے تو شطرنج بورڈ پر سوئچ کرتا ہے ، لیکن اسے تھوڑی دیر میں معمول سے الگ ہونا بھی پسند ہے۔ لوگوں کو جدید ٹیکنالوجی کے راستے دکھانے کا ان کا جذبہ انہیں مزید لکھنے کی ترغیب دیتا ہے۔

Idowu Omisola سے مزید

ہماری نیوز لیٹر کو سبسکرائب کریں

ٹیک ٹپس ، جائزے ، مفت ای بکس ، اور خصوصی سودوں کے لیے ہمارے نیوز لیٹر میں شامل ہوں!

سبسکرائب کرنے کے لیے یہاں کلک کریں۔