سبد (0)

اصلاح خطاها و دریافت کمک در جاوا

 متناوباً ممکن است شما هنگامی که عبارات جاوا را در ادیتور خود می نویسید، دچار خطاهای تایپی شوید. هنگامی که شما دستور مربوط به کامپایل کردن کلاس مورد نظر که حاوی خطا هست را صادر می کنید، کامپایلر جاوا، یک یا چند پیغام خطا را تولید می کند. پیغام خطایی که ظاهر می شود، بسته به نوع کامپایلری که از آن استفاده می کنید، متفاوت است. در کلاس FirstDialog ( که در عکس 1.13 نمایش داده شده است)، اگر در خط ششم به جای نوشتن عبارت JOptionPane، از یک حرف j کوچک استفاده کنید و آن را به صورت jOptionPane بنویسید، یک خطا مشابه با خطای تولید شده در عکس 1.15 نمایش داده می شود. 

در اولین خط از خطای نمایش داده شده، نام فایلی که خطا در آن یافت شده است (FirstDialog.java) و شماره ی خطی که خطا در آن یافت شده است و ماهیت خطا("cannot find symbol")  نمایش داده می شود. در دو خط بعد نیز نمادی که نمی تواند یافت شود(jOptionPane) و نام کلاس مورد نظر(FirstDialog) مشخص شده است. در آخرین خط از پیغام خطا، خطی که شامل خطا است، نمایش داده می شود. همچنین یک علامت نیز وجود دارد که به مکان دقیقی که خطا یافت شده است اشاره می کند. سپس تعداد خطاهای یافت شده نمایش داده شده است. در این مورد، تنها یک خطا یافت شده است. 

 این یک خطایی است که در زمان کامپایل بروز می کند و مشخص می کند که قادر نیست کد منبع را به کدهای ماشین ترجمه کند.

هنگامی که شما یک کلاس را کامپایل می کنید، کامپایلر هر تعداد خطا را که بتواند پیدا کند گزارش می دهد و شما می توانید تا حد امکان، خطاها را اصلاح کنید. گاهی اوقات یک خطای سینتکسی(نحوی یا نوشتاری) خود باعث ایجاد چندین خطا می شود به طوری که اگر خطای اول وجود نمی داشت، این خطاها نیز وجود نداشتند.  کلاس ErrotText در عکس 1.16 را در نظر بگیرید. این کلاس حاوی یک خطای تنها است زیرا کامنتی که در خط دوم شروع شده است پایان نیافته است. اما هنگامی که شما سعی کنید این کلاس را کامپایل کنید، با دو خطا مواجه خواهید شد که در عکس 1.17 نمایش داده شده اند.

 اولین پیغام خطا که در عکس 1.17 نشان داده شده است مشخص می کند که کامنت مورد نظر بسته نشده است(unclosed comment). دومین پیغام خطا پیچیده تر است و بیان می کند که در هنگام تجزیه(parsing)، به پایان فایل رسیده است. تجزیه یا parsing، به فرآیندی گفته می شود که کامپایلر از آن استفاده می کند تا سورس کدهای(کدهای منبع) شما را به بخش های معناداری طبقه بندی کند. این پیغام به این معنی است که کامپایلر در حال آنالیز کدها بوده است که زود تر از موعد به پایان فایل رسیده است. 

اگر شما کامنت مورد نظر را در کدها ببندید و به عبارت دیگر خطای اول را اصلاح کنید، و سپس کلاس مورد نظر را ذخیره کرده و کامپایل کنید، خواهید دید که هر دوی خطاها ناپدید می شوند. دومین پیغام خطا تنها به صورت یک اثر جانبی به خاطر پایان نیافتن کامنت مورد نظر ایجاد می شد. 

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

 نکته:همچنین اگر شما یک آکولاد بسته را در یک برنامه از قلم بیاندازید، با خطای "reached end of file while parsing" مواجه خواهید شد. 

یک نوع خطای دیگر وجود دارد و زمانی رخ می دهد که سینتکس ( نوشتار یا نحو) یک برنامه صحیح است و این برنامه کامپایل می شود اما هنگامی که آن را اجرا می کنیم، نتابج نادرستی را تولید می کند. به این نوع خطا، خطای منطقی(logic error) گفته می شود. یافتن و اصلاح کردن این نوع خطا، معمولاً سخت تر است.   

در کلاس ErrorTest که در عکس 1.16 قرار دارد، در صورتی که دستور قابل چاپ(دستور اجرایی) را به صورت ;("System.out.println("Tst بنویسیم، هیچ خطایی تولید نمی شود. و کامپایلر خطای نوشتن Tst را به جای Test پیدا نمی کند. سپس کد مورد نظر کامپایل می شود و JVM (ماشین مجازی جاوا) می تواند دستورات را اجرا کند.

اگر بخواهیم در مورد خطاهای منطقی بیشتر توضیح دهیم، می توانیم این موارد را ذکر کنیم: مثلا هنگامی که شما قصد دارید دو عدد را با یکدیگر جمع کنید اما آن دو عدد در یکدیگر ضرب شوند، یک خطای منطقی رخ داده است و یا اگر شما بخواهید از یک مقاله 5 کپی تهیه کنید اما یک کپی انجام شود، یک خطای منطقی رخ داده است. 

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

نکته: یک خطای منطقی، درواقع یک نوع خطای زمان اجرا است. این نوع خطا، زمانی شناسایی می شود که برنامه ی ما به هنگام اجرا، از کامپیوتر می خواهد که یک عمل اشتباه یا غیرقانونی را انجام دهد. 

 همان طور که برنامه های جاوا را می نویسید، می توانید در کنار این کتاب، از دیگر مستندات جاوا نیز بهره ببرید. در سایت شرکت سان میکروسیستمز می توانید مستندات ارزشمندی را بیابید. یکی از با ارزش ترین منابع، رابط برنامه نویسی اپلیکیشن جاوا یا همان API های جاوا هست. به API های جاوا، همچنین کتابخانه ی کلاس های جاوا، گفته می شود. API های جاوا، شامل اطلاعاتی در مورد نحوه ی استفاده از کلاس های از پیش نوشته شده ی جاوا است و شامل لیستی از تمام متدهایی است که می توانید به همراه کلاس ها از آنها استفاده کنید. 

 از دیگر جذابیت های سایت شرکت سان میکروسیستمز، سوالات و جواب هایی هستند که در آنجا مطرح شده اند. همچنین در این سایت می توانید به طور رایگان، ورژن های مختلف JDK را دانلود نمایید. این ورژن ها را می توانید برای ویندوز یا لینوکس یا دیگر سیستم عامل ها دریافت نمایید. در سایت مذکور می توانید به طور آنلاین مستندات را مشاهده کنید و یا اینکه می توانید فایل حاوی این مستندات را دانلود کنید و بر روی کامپیوتر خود نصب کنید. پس از نصب مستندات، به راحتی می توانید در کامپیوتر خود آنها را مشاهده کنید. 


دو گزینه ی صحیح و یک گزینه ی غلط

موضوع: اصلاح خطاها و دریافت کمک

سوال: در بین سه گزینه ی زیر، گزینه ی صحیح را مشخص کنید:

1. هنگامی که یک برنامه را کامپایل می کنید، گاهی اوقات وجود یک خطا در سینتکس باعث ایجاد چند خطا خواهد شد.

2. هنگامی که یک برنامه را کامپایل می کنید، گاهی اوقات وجود چند خطا در سینتکس باعث ایجاد تنها یک خطا خواهد شد.

3. پیدا کردن و اصلاح خطاهای نحوی(سینتکس) سخت تر از خطاهای منطقی است.

 پاسخ صحیح: گزینه ی 3 اشتباه است. معمولا پیدا کردن و اصلاح خطاهای منطقی، سخت تر از خطاهای نحوی است. 

 

تمامی محصولات و خدمات این وبسایت، حسب مورد دارای مجوزهای لازم از مراجع مربوطه می‌باشند و فعالیت‌های این سایت تابع قوانین و مقررات جمهوری اسلامی ایران است.
logo-samandehi مجوز نشر دیجیتال از وزرات فرهنگ و ارشاد اسلامی پرداخت آنلاین -  بانک ملت معرفی بیاموز در شبکه سه