اگه میخوای موارد زیر از جاوا رو بدونی جلسه بیست و نهم رو دانلود کن
Exceptions (استثناها)
علت های رخ دادن Exceptions (استثناها)
Checked exceptions
Unchecked exceptions
Errors ( خطاها)
برخی از متدهای کلاس Exception
کنترل و مدیریت استثناها
try – catch
Blocks ( استفاده از چند بلوک catch )
کلمات کلیدی Throws/Throw
بلوکFinally
ایجاد استثنا برای کاربر
روش تولید استثنا
سلسله مراتب استثناها
تفاوت میان کلمات کلیدی Throw و Throws
تمامی مفاهیم با مثال ساده توضیح داده شده است
به Exception در فارسی استثنا میگویند.
Exception (استثنا) چیست؟
یک exception در برنامه نویسی مشکلی است که در طول اجرای یک برنامه رخ میدهد.هنگامی که یک استثنا یا اکسپشن (exception) رخ میدهد، جریان طبیعی برنامه مختل و برنامه بصورت غیر طبیعی خاتمه مییابد.
در کل و به زبان ساده به خطاهای قابل کنترل و تصحیحی که هنگام اجرای برنامه رخ میدهد و باعث توقف جریان طبیعی برنامه میشود Exception (استثنا) میگوییم.
شما شاید با مفهوم استثنا تازه دارید آشنا میشوید اما احتمالا حداقل یکبار هنگام اجرای برنامه با خطاهای زیر برخورد کرده اید!!!!
همه این تصاویر بالا گویای رخ دادن استثنا هنگام اجرای برنامه جاوا در Eclipseهستش که به این خطاها Exception (استثنا) میگوییم.
خب جاوا برای کنترل این Exceptions (استثناها) ابزارهایی را پیش بینی کرده است!!
برخی از Exceptions (استثناها) خیلی معروف هستند از بس که اتفاق میافتند و برخی هم کمتر معروف اند:
مثلا:
• Exceptions (استثناهای) زیر مربوط به خطاهایی است که در عملیات ریاضی احتمال دارد دهند:
مثلا اگر یک عدد را بر صفر تقسیم کنیم جواب مبهم است،در برنامه نویسی نیز اگر یک عدد را بر صفر تقیسم کنیم Exception (استثنا) زیر اتفاق میافتد.
• Exception (استثنا) زیر مربوط به اندیس های خانه آرایه است،وقتی که خانه آرایه ای با اندیس یا شماره ای بیشتر تعداد خانه های آرایه یا طول آرایه صدا میزنیم.
• اگر آرایه ای را صدا بزنیم که مقدار عناصر درون آن پوچ یا null باشد Exception (استثنا) زیر رخ میدهد:
ما Exceptions (استثناهای) زیادی در جاوا داریم و قصد نداریم به معرفی انواع استثناها در جاوا بپردازیم و هدف از مثالهای بالا اشنایی و درک بهتر Exceptions (استثناها) در جاواست.
خب جاوا دستورالعمل هایی پیش بینی کرده که میتوانیم با کمک آنها در جاهایی از کدهای برنامه نویسی خود که احتمال رخ دادن Exceptions (استثناها) را میدهیم این استثناها را کنترل و مدیریت کنیم.یعنی با مدیریت استثناها حداقل باعث شویم که اگر خطایی رخ داد ،روند اجرای طبیعی برنامه را مختل و متوقف نکند.
در دوره پیشرفته برنامه نویسی جاوا به صورت ویدئویی به موضوع Exceptions (استثناها)پرداخته ایم. |
علت های رخ دادن Exceptions (استثناها) :
یک استثنا به دلایل مختلفی ممکن است رخ دهد.در زیر برخی از حالاتی که در آن Exceptions (استثناها) رخ میدهد آورده شده است:
• وقتی که کاربر داده های نامعتبر و بی ربط وارد کند.
مثلا متغیر ما از نوع رشته است اما کاربر یک عدد وارد میکند.
• وقتی ما میخواهیم یک فایل را باز و بخوانیم اما آن فایل در سیستم وجود نداشته باشد. (در جلسات آینده کار با فایل را خواهیم آموخت)
• Null یا پوچ بودن مقدار متغیرها
• عملیات ریاضی که جواب منطقی ندارد مثل تقسیم عدد بر صفر
• انتخاب اندیسی از آرایه که بیشتر از طول آرایه است
• و.......
برخی از استثناها توسط کاربر یعنی کسی که از برنامه استفاده میکند رخ میدهد، برخی توسط خود برنامه نویسی که برنامه رو نوشته رخ میدهد و برخی دیگر توسط منابع فیزیکی رخ میدهد.
در کل Exceptions (استثناها) را به سه دسته میتوان تقسیم کرد،که با درک و فهمیدن آنها میتوانید Exceptions (استثناها) برنامه خود را مدیریت و کنترل کنید.
1) Checked exceptions :
استثناها و خطاهایی که زمان کامپایل برنامه اتفاق میافتد و استثنای زمان کامپایل (compile time exceptions) نامیده میشود. خب استثنای زمان کامپایل در جاوا دیگه خیلی مشخص هست خود برنامه Eclipse هنگام کدزنی با خطوط قرمز این خطاها را برای ما مشخص کرده و هشدار میدهد و برنامه نویس به سادگی نمیتواند از آن بگذرد و یک برنامه نویس باید این خطاها را کنترل کند.
مثالی که برای استثنای زمان کامپایل (compile time exceptions) میتوان زد کلاس FileReader هستش که از طریق ان میتوانید داده های درون یک فایل را بخوانید، خب امکان داره فایل مربوطه در کامپیوتر شما وجود نداشته باشد و احتمال رخ دادن Exception (استثنا) FileNot found Exception وجود دارد، دیگه برای استثنای زمان کامپایل (compile time exceptions) رخ میدهد یعنی بدون اجرای برنامه، به شما احتمال رخ دادن خطا هشدار داده خواهد شده و شما به عنوان یک برنامه نویس باید بتوانید این خطا را مدیریت کنید.
package javalike_Exception; import java.io.File; public class Test { public static void main(String[] args) { |
• خط سبز رنگ استثنای زمان کامپایل (compile time exceptions) رخ میدهد.
• اگر شما کد بالا را اجرا کنید با خطای زیر برخورد میکنید:
کامپایلر برای محکم کاری میگه باید این استثنا را مدیریت و کنترل کنید که اگر هم فایلی در کامپیوتر وجود نداشت روند اجرای طبیعی برنامه متوقف نشود.
مثال کلاس FileReader را کلا فراموش کنید چون ما هنوز کار با فایل رو شروع نکردیم و تنها گزینه مناسبی برای مثال زدن در مورد استثنای زمان کامپایل (compile time exceptions) بود که زدیم پس اصلا نگران مفاهیم این موضوع کار با فایل نشید چون در جلسه ای جداگانه در آینده قشنگ بررسیش میکنیم 😊
2) Unchecked exceptions :
Exceptions (استثناهای) که در زمان اجرای برنامه اتفاق میافتند، این استثناها، استثناهای زمان اجرا (Runtime Exceptions) نامیده میشوند. از نمونه باگ های (اشکالات) برنامه نویسی که شامل این نوع استثناها است میتوان به خطاهای منطقی که در زمان اجرای برنامه رخ میدهد اشاره کرد.
نکته : به اشکالات و گیرهایی که در برنامه نویسی اتفاق میافتد باگ (bug) میگویند.
برای مثال، اگر شما یک آرایه را با اندازه 5 در برنامه خود تعریف کرده باشید و قصد دارید عنصر خانه 6 آرایه را صدا بزنید برنامه دچار استثنا Array index OutOfBoundsExceptionexception میشود.
مثال :
package javalike_Exception; public class Test { public static void main(String[] args) { } |
خروجی:اگر برنامه را اجرا کنید با استثنای زیر برخورد میکنید.
Exception in thread "main" java.lang.Array index OutOfBoundsException: 5 |
توضیحات:
int num[] = { 1, 2, 3, 4 }; |
• اندازه و تعداد خانه های آرایه 4 است.
System.out.println(num[5]); |
• ما عنصر خانه پنجم آرایه را صدا زده ایم، از آنجایی که اندازه آرایه ما 4 است با استثنایی که در خروجی نمایش داده شده برخورد میکنیم.
3) Errors ( خطاها):
همه اشکالات و گیرهایی که هنگام اجرای برنامه اتفاق میافتد استثنا (Exception) نیستند!!!! به طور کلی هر خطایی استثنا نیست!!!! در کل مشکلات و گیرهایی که خارج از کنترل کاربر یا برنامه نویس باشد استثنا (Exception) نیستند و به آنها خطا (Errors) میگوییم. مثل خطای stack overflow، خطای حافظه (memory error)، خطای سخت افزار (hardware error)، خطای ماشین مجازی جاوا (JVM error) و......
پس فرق خطا با استثنا این است که استثناها در برنامه نویسی قابل کنترل و مدیریت هستند اما خطاها از کنترل برنامه نویس خارج هستند.
Exception خود یک کلاس است که در کتابخانه java.lang.Exception قرار دارد. کلاس Exception فرزند کلاس Throwable است، دیگه جزییات رو براتون باز نمیکنم در همین حد بدانید کافی است.
...ادامه این جلسه آموزشی را میتوانید بصورت کتاب الکترونیکی (PDF شده) در لینک زیر دریافت کنید.
این جلسه آموزشی را بصورت کامل و مرتب شده در لینک زیر دانلود کنید:(در صورت خرابی لینک گزارش دهید)
لینک دانلود
بستن *نام و نام خانوادگی * پست الکترونیک * متن پیام |
دوره های آموزشی برنامه نویسی
انجام پروژه های برنامه نویسی
تدریس خصوصی برنامه نویسی
بیش از 7 سال از فعالیت جاواپرو میگذرد
جاواپرو دارای مجوز نشر دیجیتال از وزارت فرهنگ و ارشاد اسلامی است
جهت ارتباط مستقیم با جاواپرو در واتساپ و تلگرام :
09301904690