بررسی انواع ارورها در زبان برنامه نویسی جاوا

*بانو بهار*

کاربر نگاه دانلود
کاربر نگاه دانلود
عضویت
2016/08/15
ارسالی ها
3,937
امتیاز واکنش
10,965
امتیاز
804
محل سکونت
میان شکوفه‌ها
پس از آشنایی با مفاهیم شیئ گرایی در برنامه نویسی، مسئله ای که می تواند برای برنامه نویسان مبتدی مفید واقع شود را مطرح خواهیم که عبارت است از Error هایی که ما در برنامه نویسی با آن ها مواجه خواهیم شد.

ارورها در زبان برنامه نویسی جاوا به چند دسته تقسیم می شوند: گروه اول ارورهایی هستند که از نوع Compile-time Error می باشند. به طور مثال دستور ;()system.out.println در مقایسه با ;()System.out.println اشتباه است چرا که حرف اول واژه system به صورت کوچک نوشته شده است و همین مسئله موجب می گردد که برنامه کامپایل نشود. خبر امیدوار کننده اینجا است که این گروه از مشکلات توسط نرم افزار اکلیپس که برنامه خود را با آن می نویسیم تشخیص داده شده و به ما اخطار داده می شوند و به سادگی می توان آن را رفع کرد. برای روشن شدن این مطلب به ذکر چند مثال تصویری به همراه توضیحات خواهیم پرداخت.

همان طور که در آموزش های قبلی فرا گرفتیم، پروژه ای در محیط برنامه نویسی جاوا ایجاد کرده و یک کلاس با نام CompileTimeErrors یا هر نام دیگری در آن ایجاد می کنیم (فقط به خاطر داشته باشیم که نام کلاس ما با نام فایل java. که می سازیم دقیقاً یکی باشد که در غیر این صورت برنامه ما با مشکل مواجه خواهد شد.) پس از ایجاد پروژه، می بایست کدی مشابه کد زیر داشته باشیم:

public class CompileTimeErrors {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}
در ادامه می خواهیم جمله This is a Compile time error را داخل کنسول نمایش دهیم پس می بایست کد خود را به شکل زیر ویرایش نماییم (لازم به ذکر است که کامنت های کد که هیچ تاثیری در نحوه ی اجرای برنامه ما ندارند را حذف می کنیم):

public class CompileTimeErrors {
public static void main(String[] args) {
System.out.println("This is a Compile time error");
}
}
در واقع کد فوق یک برنامه کامل و صحیح جاوا است که بدون هیچ مشکلی اجرا خواهد شد. در این جا ما قصد داریم تا عمداً تغییری در کد ایجاد کنیم تا کامپایلر از ما ایراد بگیرد. به همین منظور واژه out که می بایست حتماً با حروف کوچک نوشته شود را به صورت OUT می نویسیم. به محض این که ما واژه ی out را به OUT تغییر دهیم و برنامه را مجدد کامپایل کنیم، با خروجی زیر مواجه خواهیم شد:


ما در تصویر فوق از روی دو مورد می توانیم متوجه شویم که برنامه ما دارای ارور است. محیط برنامه نویسی اکلیپس دور واژه ی مشکل زا که در اینجا OUT است یک نقطه چین قرار داده است. از سوی دیگر در کنار نام فایل CompileTimeError.java علامت هشداری مشاهده می شود که نشانگر ایرادی در برنامه است. حال با قرار دادن نشانگر موس خود روی واژه OUT اکلیپس پیامی را به ما نشان می دهد که به شکل زیر است:


این یکی از بخش های لـ*ـذت بخش کار کردن با نرم افزار اکلیپس است. این محیط برنامه نویسی قدرتمند مشکل را پیدا کرده و در جهت رفع آن تعدادی پیشنهاد می دهد (در اینجا صرفاً یک پیشنهاد بیشتر به ما نمی دهد چرا که مشکل خیلی پیچیده نیست!) چنانچه به خط آبی رنگ توجه کنیم، می بینیم که به ما پیشنهاد می شود که واژه OUT را به out تغییر دهیم که با این کار مشکل ما رفع خواهد شد. لازم به ذکر است که مثال فوق به منزله یکی از ساده ترین انواع ارورها در زبان برنامه نویسی جاوا است. در واقع یکسری از ارورها هستند که تا حدودی پیچیده تر اند و اکلیپس برای رفع مشکل، بیش از یک مورد به ما پیشنهاد می دهد که در چنین حالتی کار ما به عنوان برنامه نویس این است که تک تک پیشنهادات را مورد بررسی قرار داده و سپس تغییر مورد نیاز را اعمال کنیم.

نوع دیگر از ارورها تحت عنوان Unchecked Runtime Exception شناخته می شوند. در این صورت ما هیچ گونه Compile-time Error نداریم اما برنامه هم به طور کامل اجرا نمی شود. در واقع برنامه ای که ما نوشته ایم کاری را از جاوا می خواهد انجام دهد که جاوا از انجام آن ناتوان است. به طور مثال فرض کنیم که ما یک متغییر از جنس int داریم که مقدار اختصاص داده شده به آن 1,000,000 است. در حین نوشتن برنامه ما با هیچ گونه مشکلی مواجه نخواهیم شد اما به محض اینکه اقدام به کامپایل کردن برنامه می کنیم، ارور دریافت می کنیم. در مثال فوق اشکال کار در اینجا است که ما مابین ارقام یک کاما قرار داده ایم از این رو جاوا قادر به کامپایل کردن برنامه نخواهد بود. به منظور رفع این مشکل می بایست عدد فوق را به 1000000 تبدیل کنیم. در حقیقت نرم افزار اکلیپس از درک اینکه این مسئله می تواند در حین اجرا مشکل زا باشد عاجز است (در نت بینز اجازه تعریف همچین مقداری به کاربر داده نمی شود و خطا می دهد.)

برای روشن تر شدن این مسئله مثالی از دنیای واقعی می زنیم. فرض کنیم که شما از شخصی آدرس می پرسید. آن شخص به شما می گوید که مستقیم بروید تا به یک چهار راه برسید سپس به سمت راست بروید و رو به روی شما یک سینما قرار دارد. حال شما همان طور که آن شخص گفت مسیر را طی می کنید. مستقیم می روید. به چهار راه که رسیدید به سمت راست می روید. به رو به رو که نگاه می کنید به جای یک سینما یک دیوار سیمانی رو به روی شما قرار دارد! به عبارت دیگر شما از اول نمی دانستید که آدرسی که به شما داده شده است اشتباه است. زمانی که اینگونه ارورها اتفاق می افتند نیز قضیه به همین شکل است. از بدو امر جاوا نمی داند که در حین اجرای برنامه در وسط کار مشکلی قرار است اتفاق افتد از همین رو نمی تواند پیش بینی کند که برنامه در حین کامپایل شدن با مشکل مواجه خواهد شد.
 

برخی موضوعات مشابه

بالا