کنترل اعتراض ها در زبان پایتون چگونه است ؟

2

کنترل اعتراض ها در زبان پایتون چگونه است ؟

کیانا ابراهیمی سوال پاسخ داده شده اکتبر 15, 2020
گذاشتن نظر
0

کنترل اعتراض ها در زبان پایتون چگونه است ؟

در پایتون، نوشتن برنامههایی که برخی از اعتراضها را کنترل کند، امکانپـذیر اسـت. بـه ایـن مثال نگاه کنید:

>> while 1:
… try:
… x = int(raw_input(“Please enter a number: “))
… break
… except ValueError:
… print “Oops! That was no valid number. Try again…”

در این مثال تا زمانی که یک ورودي معتبر وارد شود، وارد کردن یک عدد از کـاربر درخواسـت میشود، اما اجازه میدهد که او (با استفاده از C+Ctrl یا هر چیـز دیگـري کـه سیسـتم عامـل آن را پشتیبانی میکند) برنامه را قطع کند. توجه کنید که یک وقفۀ تولید شده توسط کاربر بهوسـیلۀ تولیـد یک اعتراض KeyboardInterrupt علامت داده میشود. الگوي استفاده از دستور try بهصورت زیر است: ابتدا بند try اجرا میشود (دستور(هاي) میان دو کلمۀ کلیدي try و except ( · اگر هیچ اعتراضی رخ ندهد بند except نادیـده مـیشـود و اجـراي دسـتور try پایـان مییابد.
· اگر در طول اجراي بند try اعتراضی رخ ندهد مابقی بند رها میشـود، آنگـاه در صـورتی که نوع آن با نام اعتراضی که پس از کلمۀ کلیدي except آمـده مطابقـت کنـد، بـاقی بنـد except اجرا میشود و سپس اجرا از دستور بعدي try ادامه مییابد. · اگر اعتراضی رخ دهد که با اعتراض نام برده شده در بند except مطابقت نکند، کنتـرل به دستورات try بیرونیتر انتقال مییابد و در صورتی که کنترلکنندة دیگري وجود نداشـته باشد یک اعتراض کنترل نشده  رخ داده و اجرا با پیغامی (که نمونۀ آن را در بالا دیدید) متوقف میگردد. یک دستور try ممکن است به منظور کنترل و مدیریت اعتراضات گوناگون، بیش از یـک بنـد except داشته باشد اما تنها یکی از چند بند موجود اجرا شـده خواهـد شـد. کنتـرلکننـدههـا تنهـا اعتراضی را کنترل میکنند که در بند try متناظرشان اتفـاق افتـاده باشـد، نـه در کنتـرل کننـدگان دیگري که در همان دستور try قرار دارند. یک بند except ممکن است چندین اعتراض را در قالب یک لیست پرانتزگذاري شده عنـوان کند. براي مثال:

… except ValueError:
… pass

اگر نامهاي اعتراض در مقابل دستور except حذف شوند، ایـن بنـد except بـراي تمـامی اعتراضها عمل میکند. بنابراین از این خصوصیت با احتیاط بسیار زیادي استفاده کنید. زیرا ایـن روش بهراحتی یک خطاي واقعی برنامهنویسی را پنهان میکند. این دستور میتواند به منظور  چاپ یک پیغام خطا و تولید مجدد اعتراض نیز بهکار برده شود:

import string, sys
try:
f = open(‘myfile.txt’)
s = f.readline()
i = int(string.strip(s))
except IOError, (errno, strerror):
print “I/O error(%s): %s” % (errno, strerror)
except ValueError:

print “Could not convert data to an integer.”
except:
print “Unexpected error:”, sys.exc_info()[0]
raise

دستور except…try میتواند یک بنـد else اختیـاري هـم داشـته باشـد کـه در صـورت استفاده از آن باید پس از تمام بندهاي except قرار گیرد. این امکان، براي کدهایی که در عدم وقـوع اعتراض باید اجرا شوند، مفید است. براي مثال:

for arg in sys.argv[1:]:
try:
f = open(arg, ‘r’)
except IOError:
print ‘cannot open’, arg
else:
print arg, ‘has’, len(f.readlines()), ‘lines’
f.close()

استفاده از else بهتر از افزودن کدهاي اضافی به قسمت try است، زیرا بـهطـور تصـادفی از تولید یک اعتراض جلـوگیري مـیکنـد. اعتراضـی کـه توسـط کـد محافظـت شـده بـهوسـیلۀ دسـتور except…try تولید نشده است. هنگامیکه یک اعتراض رخ میدهد، ممکن است مقدار وابستهاي هم داشته باشد که این مقـدار با نام آرگومان اعتراض هم شناخته میشود. وقوع و نوع آرگومان به نوع اعتراض بستگی دارد. براي انواع اعتراضاتی که یک آرگومان دارند، ممکن است عبارت except متغیري پس از نام (یا لیست) اعتـراض داشته باشد تا مقدار آرگومان را دریافت کند. مانند:

>> try:
… spam()
… except NameError, x:
… print x

name ‘spam’ is not defined

اگر اعتراضی یک آرگومان داشت، این آرگومان به عنوان قسمت آخـر (جزئیـات) پیغـام اجـراي اعتراض کنترل نشده چاپ میشود. کنترلکنندههاي اعتراض تنها اعتراضاتی را که در قسمت try رخ دادهاند کنترل نمیکنند، بلکه اگر اعتراضاتی درون توابعِ فراخوانده شـده توسـط دسـتور try هـم رخ داده دهد کنترل مینمایند. براي مثال:

>> def this_fails():
… x = 1/0

>>> try:
… this_fails()
… except ZeroDivisionError, detail:
… print ‘Handling run-time error:’, detail

Handling run-time error: integer division or modulo by zero

برای اموزش های ویدیویی زبان پایتون به بستر ویدیو های اموزشی بروید

بستر اموزش های ویدویی 

کیانا ابراهیمی سوال پاسخ داده شده اکتبر 15, 2020
گذاشتن نظر
پاسخ خود را بنویسید .
  • فعال
  • بازدیدها1427 times
  • پاسخ ها1 پاسخ
ورود به متاورس | متاورس ایرانی
ورود به متاورس ایران یا همان متاورس ملی

علامت ذره بین Tutorials سمت راست به رنگ قرمز به شما کمک خواهد کرد .

جدید ترین سوالات پرسیده شده

منقضی شدن سم بتانال 1 پاسخ | 0 آرا
ایا ایدز گزفتم؟ 0 پاسخ ها | 0 آرا
انتخاب ورزش رزمی 0 پاسخ ها | 1 رای
وزارت تعاون کار و رفاه اجتماعی نماد اعتماد الکترونیک اسناد و املاک کشور مرکز آموزش ویدیویی انجمن حم فروشگاه ملی تولید کنندگان مدیریت بر مدیران حم سامانه حیوانات رسانه ملی اخبار متا دانشگاه متاورس استخدام | دانش فروشگاه حم تبلیغات ملی بازار NFT متاورس رنگ نقشه ملی سه بعدی متا املاک و مستغلات