Farzad Afi Logo

FarzadAfi

آموزش تخصصی برنامه نویسی

Java Exception(throw_throws)

📖توضیحات درس

🎥 این ویدیو قسمت شصت و سوم از بوت‌کمپ رایگان جاواست. 📚 آشنایی کامل با throw و throws در جاوا در این جلسه سراغ یکی از مفاهیم مهم و پرکاربرد در مدیریت خطاها (Exception Handling) در جاوا می‌ریم: throw و throws. اول از همه، به‌صورت تئوری یاد می‌گیریم این دو چه تفاوتی با هم دارن و چرا در مصاحبه‌های شغلی زیاد ازشون سؤال میشه 🎯 سپس در بخش عملی، با مثال‌های واقعی می‌بینیم که چطور می‌تونیم ازشون در پروژه‌هامون استفاده کنیم تا مدیریت خطاها تمیزتر و حرفه‌ای‌تر انجام بشه ⚙️ در این ویدیو بررسی می‌کنیم: 💡 مفهوم throw در جاوا و کاربردش در پرتاب استثناها ⚡ نحوه‌ی استفاده از throws برای اعلام خطا در متدها 🧩 تفاوت‌های کلیدی بین throw و throws 🧠 نکات مهم مصاحبه‌ای و تمرین‌های عملی برای درک بهتر مفاهیم 🔁 مرور و جمع‌بندی برای تثبیت یادگیری 💬 گروه پرسش و پاسخ تلگرام: @programmingByFarzadAfi 💬 گروه پرسش و پاسخ بله: @programming_by_farzadafi هر سوالی داشتی، می‌تونی توی گروه بپرسی؛ من یا مربی‌های گروه کمکت می‌کنیم 💬 🎯 بوت‌کمپ رایگان جاوا – آموزش پروژه‌محور برای یادگیری عمیق و ورود به بازار کار 🚀
00:20:10🎯رایگان

📄جزوه

مفاهیم کلیدی

  • throw کیوردی که برای پرتاب صریح یک Exception در داخل بدنه کد استفاده می‌شود. زمانی که برنامه‌نویس تشخیص می‌دهد شرایط غیرعادی پیش آمده، با استفاده از این کیورد روند عادی method را مختل کرده و یک استثنا پرتاب می‌کند.

  • throws کیوردی که در امضای (Signature) متد نوشته می‌شود تا اعلام کند این method ممکن است یک یا چند استثنا پرتاب کند. این کیورد مسئولیت مدیریت استثنا را به لایه‌های بالاتر (فراخوان‌کننده متد) واگذار می‌کند.

  • Checked Exception استثناهایی که کامپایلر جاوا بررسی آن‌ها را الزامی می‌داند. در صورت استفاده از این نوع استثناها، حتماً باید یا از try-catch استفاده شود یا با استفاده از کیورد throws در امضای متد اعلام گردند.

  • Unchecked Exception استثناهایی که از کلاس RuntimeException ارث‌بری می‌کنند. ذکر این استثناها در امضای متد با استفاده از throws اختیاری است و کامپایلر کاربر را مجبور به مدیریت آن‌ها نمی‌کند.

  • Exception Propagation فرآیندی که در آن یک استثنا از پایین‌ترین سطح فراخوانی (مثلاً یک متد داخلی) به سمت لایه‌های بالاتر (مانند متد main) پرتاب می‌شود تا زمانی که یک لایه مسئولیت هندل کردن آن را بر عهده بگیرد.

موارد مصاحبه ای

  • تفاوت اصلی throw و throws در چیست؟ throw برای پرتاب یک استثنا در بدنه کد (مانند یک دستور اجرایی) به کار می‌رود، اما throws در امضای متد برای اعلام احتمال وقوع استثنا و انتقال مسئولیت هندل کردن آن استفاده می‌شود.

  • آیا استفاده از throws برای تمام استثناها الزامی است؟ خیر؛ استفاده از این کیورد فقط برای Checked Exceptions الزامی است. برای Unchecked Exceptions (مانند ArithmeticException) استفاده از آن اختیاری است.

  • قانون throws در ارث‌بری (Inheritance) چیست؟ اگر متد کلاس پدر استثنای خاصی را پرتاب نکند، متد کلاس فرزند (در صورت Override کردن) نمی‌تواند استثنای Checked جدیدی پرتاب کند. همچنین، کلاس فرزند حق ندارد استثنایی گسترده‌تر (Broader) از استثنای کلاس پدر پرتاب کند و فقط می‌تواند استثناهای محدودتر (Subclass) را اعلام نماید.

  • شباهت throw با return در چیست؟ هر دو کیورد باعث توقف ادامه اجرای کدهای آن method می‌شوند. با این تفاوت که return در شرایط عادی و برای برگرداندن مقدار استفاده می‌شود، اما throw در شرایط غیرعادی و برای اعلام خطا.

سناریو کاربردی

در ویدیو سناریوی اعتبارسنجی سن کاربر بررسی شده است. فرض کنید برنامه‌ای برای صدور گواهینامه دارید: ۱. سن کاربر دریافت می‌شود. ۲. یک متد به نام validateAge طراحی شده که سن را بررسی می‌کند. ۳. اگر سن کمتر از ۱۸ سال باشد، برنامه‌نویس با استفاده از throw new IllegalArgumentException() عمداً یک استثنا پرتاب می‌کند تا روند برنامه متوقف شود و پیام خطا صادر گردد. ۴. اگر سن ۱۸ یا بیشتر باشد، برنامه بدون مشکل ادامه یافته و پیام موفقیت چاپ می‌شود. این مثال نشان می‌دهد که چگونه throw می‌تواند برای کنترل منطق برنامه در شرایط غیرمجاز استفاده شود.

بیشتر بدانید

  • نکته معماری پاس دادن مداوم استثناها به لایه‌های بالاتر با throws تا رسیدن به متد main تمرین اشتباهی است. در نهایت باید در یک لایه مناسب، استثنا با try-catch مدیریت شود تا برنامه به صورت ناگهانی بسته نشود.

  • Custom Exceptions اگرچه می‌توان از استثناهای آماده جاوا مانند ArithmeticException استفاده کرد، اما برای خوانایی بیشتر و مدیریت دقیق‌تر، بهتر است استثناهای اختصاصی (Custom Exceptions) برای سناریوهای خاص خود بسازید.

  • IDE Tip در محیط IntelliJ اگر از یک متد استفاده کنید که Checked Exception پرتاب می‌کند، محیط توسعه با خطای قرمز به شما هشدار می‌دهد و با استفاده از میان‌برهای پیشنهادی می‌توانید به سرعت try-catch یا throws signature را به کد خود اضافه کنید.