|
5 | 5 | :keywords: آموزش, آموزش پایتون, آموزش برنامه نویسی, پایتون, Data Class, کتابخانه, پایتون, شی گرایی در پایتون |
6 | 6 |
|
7 | 7 |
|
8 | | -درس ۲۳: مدیریت خطا در پایتون: Warning ،Error ،Exception |
| 8 | +درس ۲۳: مدیریت خطا در پایتون: Exception ،Error و Warning |
9 | 9 | =================================================================================================== |
10 | 10 |
|
11 | 11 | .. figure:: /_static/pages/23-python-exception-error-warning-try.jpg |
|
33 | 33 | ---- |
34 | 34 |
|
35 | 35 |
|
| 36 | +مقدمه |
| 37 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 38 | + |
| 39 | +بروز **خطا (Error)** همواره جزیی از برنامهنویسی بوده و هست. خطاهای برنامهنویسی انواع گوناگونی دارند؛ «خطاهای زمان کامپایل» (Compile-time errors) که آنقدر فاحش هستند که مانع از اجرای برنامه خواهند شد و برخی دیگر که میتوانند آنقدر ناقلا باشند که تا مدتها پس از اجرا نیز خودشان را نشان ندهند! به این دسته از خطاها به اصطلاح «خطاهای زمان اجرا» (Runtime errors) میگویند. |
| 40 | + |
| 41 | +**«خطاهای زمان کامپایل» (Compile-time errors)** حاصل اشتباه برنامهنویس بوده و معمولا نیز کشف و برطرف نمودن آنها نیز بسیار ساده میباشد و از عدم رعایت درست قواعد زبان برنامهنویسی مانند سینتکس نشات میگیرند. |
| 42 | + |
| 43 | +اما بروز **«خطاهای زمان اجرا» (Runtime errors)** میتواند به عوامل گوناگونی وابسته باشد همانند مشکلات سختافزاری که ناگهان به برنامه تحمیل میگردد که اگر از فرض این احتمال نیز صرف نظر کنیم!، باز هم برای دفاع در برابر این دسته از خطاها، برنامهنویس میبایست کاملا هوشیار باشد. به خصوص در زبانهای برنامهنویسی پویا به مانند پایتون که انواع داده در زمان اجرا تعیین میگردند. برای مثال فرض کنید در داخل یک تابع قرار است با یک نوع ``int`` کار شود ولی به علت ضعف برنامهنویسی و عدم کنترل ورودیها، یک داده با نوع ``str`` به آن ارسال گردد که در این صورت نتیجه مشخص است! البته جلوگیری از این دست خطاها نیز همچنان ساده میباشد!. گاهی ممکن است وضعیت آنچنان مهلک باشد که یا خیلی دیر به وجود یک خطا در برنامه پی ببریم یا برای کشف علت آن زمان زیادی صرف کنیم یا هر دو! به این نوع از خطاهای زمان اجرا، «خطاهای منطقی» (Logical errors) گفته میشود. |
| 44 | + |
| 45 | +**«خطاهای منطقی» (Logical errors)** برخلاف دیگر خطاها باعث توقف اجرای برنامه نشده بلکه باعث تولید نتایج نادرستی میشوند که از دیدگاه برنامهنویسی درست بوده ولی از دیدگاه منطقی کاملا اشتباه هستند. به عنوان یک مثال ساده فرض کنید فرمول محاسبه معدل اشتباه پیادهسازی شده باشد! این نوع خطا مصداق بارز «باگ» (Bug) در برنامه است که همیشه پیشگیری، از کشف و اصلاح آنها به مراتب سادهتر خواهد بود. |
| 46 | + |
| 47 | + |
| 48 | +با وجود این توضیحات و همانطور که مشاهده خواهید کرد، بروز خطا همواره یک امر زشت و ناخواسته نبوده بلکه گاهی نیز یک استراتژی از سوی برنامهنویس خواهد بود تا یک وضعیت را به سطوح دیگر از برنامه اعلام یا اینکه مستقیما تغییری در روند اجرای برنامه ایجاد کند. در این صورت خطاها دیگر با نام زشت خطا خوانده نمیشوند بلکه به آنها **استثنا یا Exception** میگویند. |
| 49 | + |
| 50 | + |
| 51 | +به صورت کلی، **استثنا یا Exception** امکانی برای خروج برنامه از یک وضعیت مشخص است و بروز آن، همانند اعلام عمومی یک خبر مهم در برنامه میباشد. میتوان با پیشبینی بروز Exceptionها در برنامه، به اصطلاح آنها را **catch** نمود و فرآیندی را برای مدیریت آنها پیادهسازی کرد. |
| 52 | + |
| 53 | +درک وقوع یک Exception و امکان ایجاد یک فرآیند برای مدیریت آن، قابلیت مهمی در یک زبانبرنامهنویسی محسوب میشود. چرا که میتوان از آن در دو نقش زیر بهره گرفت: |
| 54 | + |
| 55 | +**۱) مدیریت خطا (Error handling):** هر Exception میتواند معرف یک نوع خطا یا وضعیتی نادرست در برنامه باشد، میتوان بر اساس نوع Exception و خطایی که رخ داده برای آن از پیش چارهاندیشی و فرآیندی را برای مدیریت آن خطا در برنامه پیشبینی کرد. |
| 56 | + |
| 57 | + |
| 58 | +**۲) اطلاعرسانی یک رویداد (Event notification):** از Exceptionها میتوان برای اعلام وقوع یک حادثه مثبت نیز در برنامه استفاده کرد. به این صورت میتوان در زمان اجرای برنامه و بر حسب شرایط، روند اجرای برنامه را تغییر داد. |
| 59 | + |
| 60 | +| |
| 61 | +
|
| 62 | +| |
| 63 | +
|
| 64 | +به زبان برنامهنویسی پایتون برمیگردیم. انواع خطاها در پایتون را میتوان در دو دسته کلی زیر در نظر گرفت: |
| 65 | + |
| 66 | +* خطاهای سینتکس (Syntax errors) |
| 67 | + |
| 68 | +* خطاهای منطقی (Logical errors) |
| 69 | + |
| 70 | +برای درک این دستهبندی و مطابقت دادن آن با توضیحات پیش لازم است تا بار دیگر به روند اجرای کدهای پایتون توجه نماییم (درس سوم - پشت صحنه اجرا). |
| 71 | + |
| 72 | + |
| 73 | + |
| 74 | + |
| 75 | + |
36 | 76 |
|
37 | 77 |
|
38 | 78 |
|
|
0 commit comments