استثناها (Exceptions)
مدیریت خطاها در جاوا: try/catch/finally و throw.
Exception چیست؟
رویداد غیرمنتظره در زمان اجرا که جریان عادی را قطع میکند — تقسیم بر صفر، دسترسی به ایندکس نامعتبر و...
try...catch — مهار خطا
try {
int result = 10 / 0; ← خطا اینجا رخ میدهد
System.out.println(result);
} catch (ArithmeticException e) {
System.out.println("خطای ریاضی: " + e.getMessage());
}
// برنامه ادامه میدهد — کرش نمیکند!
finally — همیشه اجرا میشود
try {
// کد پرخطر
} catch (Exception e) {
// مدیریت خطا
} finally {
// پاکسازی — همیشه اجرا میشود (خطا یا نه)
System.out.println("پاکسازی انجام شد");
}
انواع Exception های رایج
| Exception | علت |
|---|---|
ArithmeticException | تقسیم بر صفر |
ArrayIndexOutOfBoundsException | ایندکس خارج از آرایه |
NullPointerException | دسترسی به شیء null |
NumberFormatException | تبدیل رشته نامعتبر به عدد |
چند catch
try {
int[] arr = new int[3];
arr[5] = 10; ← خطای ایندکس
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("ایندکس نامعتبر!");
} catch (Exception e) {
System.out.println("خطای عمومی: " + e.getMessage());
}
throw — پرتاب دستی خطا
static void setAge(int age) {
if (age < 0) {
throw new IllegalArgumentException("سن نمیتواند منفی باشد: " + age);
}
System.out.println("سن ثبت شد: " + age);
}
الگوی بررسی-و-مهار
static int divide(int a, int b) {
if (b == 0) {
throw new ArithmeticException("تقسیم بر صفر!");
}
return a / b;
}
// استفاده
try {
System.out.println(divide(10, 2)); ← 5
System.out.println(divide(10, 0)); ← خطا!
} catch (ArithmeticException e) {
System.out.println("خطا: " + e.getMessage());
}
استثناها برای شرایط استثنایی هستند — برای جریان عادی از if/else استفاده کنید!
این مبحث بخشی از دوره آموزش کامل جاوا است.