برای مطالعه بخش هیجدم آموزش رایگان پایتون اینجا کلیک کنید
کار با آرگومانهای استثناءها
بیشتر استثناءها دارای آرگومان نیستند، (منظور فهرستی از مقادیری است که شما برای بررسی اطلاعات اضافیتر از آنها استفاده میکنید.) با اینحال تعدادی از استثناءها آرگومانهایی در اختیارتان قرار میدهند تا اطلاعات بیشتری درباره یک خطا به دست آورده و بتوانید یک مشکل را برطرف کنید. اما چگونه با استثناءهای دارای آرگومان کار کنیم؟ برای روشن شدن این مبحث به مثال زیر دقت کنید:
1.IDLE را باز کرده و از منوی File گزینه New File را انتخاب کنید.
2. قطعه کد زیر را درون پنجره جدید تایپ کنید.
import sys
try:
File = open('myfile.txt')
except IOError as e:
print("Error opening file!\r\n" +
"Error Number: {0}\r\n".format(e.errno) +
"Error Text: {0}".format(e.strerror))
else:
print("File opened as expected.")
File.close();
3. قطعه کد بالا شکل پیشرفتهتری از مدیریت خطاها را نشان میدهد. در قطعه کد بالا فرمان Import به منظور دریافت کدی که درون فایل دیگری قرار دارد استفاده میشود. (در شمارههای آتی اطلاعات بیشتری درباره فرمان Import به دست خواهید آورد.) تابع open برای باز کردن یک فایل استفاده شده و به شما اجازه میدهد به یک فایل دسترسی داشته باشید. خروجی فرمان Open درون متغیری به نام File قرار میگیرد که اجازه دسترسی به محتوای فایل ارائه میکند. (ما در شمارههای آینده اطلاعاتی بیشتری درباره نحوه خواندن فایلها ارائه خواهیم کرد) اگر فایل myfile.txt درون پوشه برنامه کاربردی شما قرار داشته باشد که فایل باز شده و دستگیره مربوط به فایل درون متغیر File قرار گرفته و فرمان print اعلام میدارد که فایل باز شده است، اما اگر فایل وجود نداشته باشد سیستمعامل به دلیل عدم وجود فایل خطایی تولید کرده و به پایتون اعلام میکند که این فایل وجود ندارد. زمانی که سعی کنید فایلی باز کنید که وجود ندارد، سیستمعامل استثناء IOError را تولید میکند. پایتون برای این خطا دو آرگومان به شرح زیر در اختیارتان قرار میدهد.
Errno: این آرگومان شماره خطایی که سیستمعامل تولید کرده را در قالب یک مقدار صحیح نشان میدهد.
Strerror: شامل اطلاعاتی درباره خطا است. اطلاعاتی که برای ما قابل فهم است.
کلمه کلیدی as که درون بخش except قرار گرفته اطلاعات ارسالی از سوی آرگومانها را درون متغیر e قرار میدهد. در نتیجه به شما اجازه میدهد به اطلاعات بیشتری دسترسی داشته باشید. درون بلوک except یک فرمان print قرار دارد که اطلاعات خطا را به شکل قابل فهم انسانی فرمت میکند. حال اگر فایلی به نام myfile.txt درون پوشه برنامه (مکانی که فایل برنامه را ذخیره کردهاید) قرار دهید، به معنای آن است که فایل مدنظر در پوشه قرار داشته و در نتیجه خطایی تولید نمیشود. در این حالت دستورات درون بلوک else اجرا میشوند. در این حالت پیغام فایل باز شده را مشاهده خواهید کرد.
3. برنامه را ذخیره کرده و از منوی Run گزینه Run Module را انتخاب کنید. با اجرای برنامه فوق پیغام خطای مدیریت شدهای همانند شکل زیر را مشاهده میکنید.
4. این مرتبه در پوشهای که برنامه کاربردی شما در آن ذخیره شده فایلی به نام myfile.txt کپی کرده و برنامه را دومرتبه اجرا کنید. اینبار مشاهده میکنید که برنامه بدون نمایش یک پیغام خطای مدیریت شده اعلام میدارد که فایل باز شده است.
مدیریت چند استثناء با استفاده از یک دستور except انفرادی
در برنامههای کاربردی ممکن است یک خط کد استثناءهای مختلفی را به وجود آورد. هر برنامهنویسی به شیوه خاص خود خطاهای چندگانه را مدیریت میکند، البته بخشی از این رویکرد به نوع خطاهایی که ممکن است در یک برنامه رخ دهند بستگی دارد. زمانیکه میدانید مخاطب برنامه شما یک کاربر کم تجربه است، از این موضوع اطلاع دارید که برنامه ممکن است خطاهای غیرمنتظرهای را تولید کند. در این حالت بهتر است یک فایل گزارش ایجاد کنید تا جزییات بروز خطا در یک مکان مرکزی ذخیره شوند. شما میتوانید از یک except انفرادی برای مدیریت خطاهای چندگانهای که ممکن است باعث بروز خطا شوند استفاده کنید. این تکنیک عدم نیاز به exceptهای متعدد را برطرف میکند. برای آشنایی بیشتر با این تکنیک به مثال زیر دقت کنید:
1.IDLE را باز کرده و از منوی File گزینه New File را انتخاب کنید.
2. قطعه کد زیر را درون پنجره جدید وارد کنید
try:
Value = int(input("Type a number between 1 and 10:"))
except (ValueError, KeyboardInterrupt):
print("You must type a number between 1 and 10!")
else:
if (Value > 0) and (Value <= 10):
print("You typed: ", Value)
else:
print("The value you typed is incorrect!")
3. قطعه کد بالا شباهت زیادی به کدهایی دارد که در شماره قبل بررسی کردیم، اما یک تفاوت کوچک دارد. در بدنه فرمان except هر دو استثناء ValueError و KeyboardInterrupt قرار گرفتهاند. همچنین دقت کنید که استثناءها درون پرانتز قرار گرفته و با کاما از یکدیگر جدا شدهاند.
4. برنامه را ذخیره کرده و از منوی Run گزینه Run Module را انتخاب کنید. برنامه اجرا شده و از شما درخواست میکند مقداری در محدوده 1 تا 10 را وارد کنید.
5. واژه Hello را وارد کرده و کلید اینتر را فشار دهید. برنامه پیغام خطای مدیریت شدهای به شما نشان میدهد.
6. برنامه را دومرتبه اجرا کرده و مقدار 22 را وارد کنید. برنامه به شما اعلام میدارد مقداری در محدوده مشخص شده وارد کنید.
7. برنامه را اجرا کرده و این مرتبه کلیدهای Ctrl+C را فشار دهید.. اینکار باعث باعث به وجود آمدن یک حالت خطا میشود، اما به دلیل اینکه در برنامه پیشبینی این خطا شده است، برنامه اعلام میدارد که شما باید مقداری را تایپ کیند
8. اگر برنامه را اجرا کرده و این بار مقدار 7 را وارد کنید، برنامه بدون مشکل اجرا میشود.
مدیریت خطاهای چندگانه با بلوکهای except چندگانه
زمانی که با خطاهای چندگانه کار میکنید، ایده خوبی است که برای مدیریت هر خطا از بلوک except جداگانهای استفاده کنید. این رویکرد به شما اجازه میدهد تا بتوانید به شکل سفارشیتر و دقیقتری به هر خطا رسیدگی کنید. البته دقت کنید که این روش به کار بیشتری نیاز دارد. برای آشنایی با نحوه مدیریت خطاها به این شکل به مثال زیر دقت کنید.
1. IDLE را اجرا کرده و از منوی File گزینه New File را انتخاب کنید.
2. قطعه کد زیر را درون پنجره جدید وارد کرده و کلید اینتر را فشار دهید.
try:
Value = int(input("Type a number between 1 and 10:
"))
except ValueError:
print("You must type a number between 1 and 10!")
except KeyboardInterrupt:
print("You pressed Ctrl+C!")
else:
if (Value > 0) and (Value <= 10):
print("You typed: ", Value)
else:
print("The value you typed is incorrect!")
3. به نحوه بهکارگیری بلوکهای چندگانه except دقت کنید. هر بلوک except برای مدیریت خطای متفاوتی استفاده میشود. شما میتوانید تکنیک فوق را به شکل ترکیبی نیز استفاده کنید. به عبارت دقیقتر استثناءهای مختلف را درون یک بلوک except قرار داده و یک استثناء خاص را درون بلوک except جداگانهای قرار دهید. پایتون به شما اجازه میدهد از این رویکرد برای مدیریت هر چه بهتر خطاها استفاده کنید.
3. برنامه را ذخیره کرده و از منوی Run گزینه Run Module را انتخاب کنید. برنامه را با مقادیری که در مثال قبل مشاهده کردید، آزمایش کنید. نتایج یکسان خواهند بود، اما شما از یک حالت سفارشی برای مدیریت خطاها استفاده کردهاید.
در شماره آینده آموزش پایتون مبحث مدیریت خطاها را ادامه خواهیم داد.
ماهنامه شبکه را از کجا تهیه کنیم؟
ماهنامه شبکه را میتوانید از کتابخانههای عمومی سراسر کشور و نیز از دکههای روزنامهفروشی تهیه نمائید.
ثبت اشتراک نسخه کاغذی ماهنامه شبکه
ثبت اشتراک نسخه آنلاین
کتاب الکترونیک +Network راهنمای شبکهها
- برای دانلود تنها کتاب کامل ترجمه فارسی +Network اینجا کلیک کنید.
کتاب الکترونیک دوره مقدماتی آموزش پایتون
- اگر قصد یادگیری برنامهنویسی را دارید ولی هیچ پیشزمینهای ندارید اینجا کلیک کنید.
نظر شما چیست؟