دوره H برنامه نویسی پایتون
فصل چهارم: استثناها و فایل ها در پایتون
درس دوم: تولید یک استثنا (خطا) در پایتون
احتمالا با خواندن عنوان این درس، تعجب کرده باشید و بپرسید که چرا باید خودمان خطا تولید کنبم؟! 😐 در حالی که «درس قبل» با نحوه مدیریت خطاها و جلوگیری از آنها آشنا شدیم؛ اما حالا میخواهیم خودمان یک خطا درست کنیم؟! 😐
بله! دقیقا قصد داریم تا خودمان یک خطایی را تولید کنیم! حالا از هر نوعی که باشد 😀
روش تولید یک خطا
برای تولید یک خطا در پایتون، از دستور raise استفاده میشود. بصورت زیر:
print(1) raise ValueError print(2)
در اینجا، خط سوم اجرا نخواهد شد؛ چراکه خط دوم، خطای ValueError را ایجاد میکند و این خطا نیز داخل بلوک try و except مدیریت نشده است. بنابراین برنامه متوقف میشود 🙂
خروجی:
>>> 1 ValueError >>
فرض کنید در حال نوشتن یک تابع هستید که قرار است در ورودی خود یک رشته دریافت کند و این رشته حتما بایستی کاراکتر اول آن یک حرف باشد؛ چراکه تابع شما به اینگونه ساختار نیاز دارد تا بدرستی کار کند. اما اگر کاراکتر اول آن حرف نباشد چه باید کرد؟! آیا تابع میتواند بدرستی کار کند؟! خیر! چون منطق تابع اینگونه است که به وجود یک حرف در ابتدای رشته نیاز دارد؛ بنابراین میتوان یک نوع خطا در زمانی که کاراکتر اول حرف نبود، تولید کرد.
تعیین پیام خطا
بیایید خطای خود را با یک پیام دلخواه ایجاد کنیم:
name = "123" raise NameError("Invalid name!")
داخل پرانتزها و به عنوان یک آرگومان ورودی، مقدار Invalid name را ارسال کردیم که این همان پیام خطای NameError است. البته توجه داشته باشید که NameError یک تابع نیست؛ بلکه یک کلاس از جنس کلاسهای خطا است. 🙂 در آینده با کلاسها آشنا میشوید.
خروجی بصورت زیر خواهد شد:
>>> NameError: Invalid name! >>>
همانطور که میبینید، خطا به همراه پیام دلخواهمان ایجاد شده است.
بیخیال except
حالا بنظرتان اگر داخل یک except، خود دستور raise را بدون تعیین هیچ نوعی بنویسیم، چه اتفاقی میافتد؟!
try: num = 5 / 0 except: print("An error occurred") raise
خروجی بصورت زیر خواهد شد:
>>> An error occurred ZeroDivisionError: division by zero >>>
در کد بالا، داخل try خطایی رخ میدهد؛ خطا به except میرود تا مدیریت شود؛ اما except داخل خود، دستور raise را دارد که این باعث میشود تا خطای دریافت شده، مجدد پرتاب شود! بنابراین در همان نقطه، خطا رخ داده و متوقف میشود. 🙂
در درس بعدی با نوع دیگری از خطاها در پایتون آشنا خواهیم شد. ?
نظرات ثبت شده بدون دیدگاه