حل مشکل خطاهای در حال اجرا

کنترل غیرممکن‌ها

تقریبا هیچ برنامه‌نویسی نمی‌تواند کدی بنویسد و بگوید کد من بدون هیچ مشکلی اجرا خواهد شد. البته منظور از کد، یک برنامه ساده نیست. یک برنامه یا یک قطعه برنامه پیچیده، اهمیت خطایابی برنامه‌ها از موضوعات مهمی است که طی مرحله توسعه نرم‌افزار بارها توسط آزمایش‌های متعدد مورد ارزیابی قرار می‌گیرد. یکی از این آزمایش‌ها، آزمایش واحد است که در طول زمان توسعه توسط برنامه‌نویس‌ها انجام می‌شود. آزمایش دیگر آزمایشی است که توسط کاربران سیستم انجام می‌شود.
کد خبر: ۵۰۱۳۹۳

صرف نظر از این آزمایش‌ها ممکن است برخی شرایط باعث به وجود آمدن مشکلاتی در برنامه شود که در آزمایش‌ها آنها را نمی‌شود تشخیص داد. سعی ما در این مقاله این است خطاهایی را که ممکن است تا قبل از این آزمایش‌ها به وجود آید، بررسی و آنها را رفع کنیم. قبل از این‌که این مشکلات را بشناسیم مقدمه‌ای در مورد خطاهای برنامه می‌‌آوریم. زمانی که یک برنامه را می‌نویسید با دو نوع خطا مواجه می‌شوید:

۱ ـ خطا در زمان کامپایل‌کردن: این خطاها زمانی رخ می‌دهد که شما برنامه خود را کامپایل می‌کنید. این خطاها در نسخه توسعه داده‌شده برنامه شما مشاهده نخواهد شد و معمولا به آنها خطاهای گرامری می‌گویند. اما این خطاها در برنامه‌هایی که به صورت Script هستند مانند PHP به وجود می‌آید و در طول توسعه برنامه و در آینده نیز مشاهده خواهد شد.

۲ ـ خطاهای در حال اجرا: بعضی از خطاها در شرایطی خاص پیش می‌آید؛ برای مثال شما می‌خواهید برنامه‌نویسی موبایل یک فایل را در SD کارت ذخیره کنید یا از آن بخوانید یا به اینترنت دسترسی داشته‌ باشید. ممکن است حین کار SD کارت موبایل شما غیرقابل دسترس باشد یا این‌که اینترنت شما وصل باشد، اما انتقال اطلاعات را انجام ندهد، این‌گونه خطاها ممکن است در آزمایش‌های انجام شده به وجود نیاید و در شرایطی خاص اتفاق بیفتد؛ اما چگونه باید این مشکلات را حل کنیم؟

حل این مشکلات بیشتر وابسته به برنامه‌نویس و تجربه آن است تجربه شما در برنامه‌نویسی می‌تواند در این مرحله به شما کمک کند تا تمامی شرایط را در نظر بگیرید. اما راه دیگر استفاده از ساختار try-catch-finally است. این ساختار به شما کمک می‌کند زمانی که احتمال می‌دهید کد شما مشکل دارد، از این ساختار استفاده کنید. اما این، آخرین راه‌حل شماست و باید در استفاده از آن احتیاط را رعایت کنید؛ زیرا سربار زیادی برای کد و برنامه شما دارد و توصیه می‌شود تا زمانی که مجبور نشده‌اید از این ساختار استفاده نکنید.

اما این ساختار دقیقا چه کاری انجام می‌دهد؟

این ساختار به این صورت است:

Try{

}catch{

}finally{

}

شما سه قطعه کد در ساختار بالا می‌نویسید. کدی که قرار است try نوشته شود، کد اصلی شماست که احتمال می‌دهید خطای در حال اجرا در آن رخ دهد. برنامه شروع می‌کند به اجرا‌ی کدی که درون try نوشته‌اید و در یک جایی از آن به خطا بر می‌خورد. سپس قطعه کدی که در catch نوشته‌اید اجرا می‌شود. این قطعه کد معمولا برای نمایش پیغام خطا یا ثبت در بخش ثبت وقایع سیستم قرار دارد. این پیغام خطا و ثبت وقایع، به کاربران و توسعه‌دهنده‌های سیستم کمک می‌کند که مشکلات سیستم را تشخیص داده و به رفع آن اقدام کنند. در بخش finally کدی وجود دارد که بعد از کد try باید اجرا شود. فرض کنید شما قرار است یکسری داده را از دیتابیس بخوانید و آنها را پردازش کنید، در بخش try این‌کار را انجام می‌دهیم، اما ممکن است به هر دلیل شما نتوانید داده‌های مورد نظر خود را بخوانید و یک خطا در آن کار رخ دهد. در این صورت به بخش catch هدایت می‌شوید، سپس به بخش finally. داده‌ها با موفقیت خوانده شدند و هیچ خطایی رخ نداد ولی شما قصد دارید ارتباط خود را با دیتابیس قطع کنید، این کار را در کجا باید انجام دهید؟

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

امیر بهاء‌الدین سبط‌الشیخ

newsQrCode
ارسال نظرات در انتظار بررسی: ۰ انتشار یافته: ۰

نیازمندی ها