استثناها (Exceptions)
اینجا درباره «استثناها جاوا» حرف می زنیم. «استثنا (Exception)» یعنی خطای زمان اجرا. وقتی رخ دهد، برنامه می ایستد. اما با try...catch می توانیم خطا را مدیریت کنیم. پس برنامه نمی ریزد و پیام مناسب می دهیم.
مدیریت استثنا با try و catch
«try» بخشی است برای تست کد. «catch» بخشی است برای گرفتن خطا. این دو همیشه جفت هستند. مانند بازی، اگر توپ بیفتد، catch می گیرد.
الگو (Syntax)
try {
// Block of code to try
}
catch (Exception e) {
// Block of code to handle errors
}
نمونه خطا بدون catch
اینجا عدد خارجِ آرایه خوانده می شود. خطا رخ می دهد و برنامه می ریزد.
public class Main {
public static void main(String[] args) {
int[] myNumbers = { 1, 2, 3 };
System.out.println(myNumbers[10]);
}
}
گرفتن خطا با try...catch
اکنون خطا را می گیریم. برنامه نمی ریزد. پیام دوستانه چاپ می شود.
public class Main {
public static void main(String[] args) {
try {
int[] myNumbers = { 1, 2, 3 };
System.out.println(myNumbers[10]);
} catch (Exception e) {
System.out.println("Something went wrong.");
}
}
}
بلاک finally
«finally» همیشه اجرا می شود. چه خطا باشد، چه نباشد. برای بستن منابع عالی است.
public class Main {
public static void main(String[] args) {
try {
int[] myNumbers = { 1, 2, 3 };
System.out.println(myNumbers[10]);
} catch (Exception e) {
System.out.println("Something went wrong.");
} finally {
System.out.println("The 'try catch' is finished.");
}
}
}
ایجاد خطا با throw
«throw» یعنی خودت خطا بسازی. وقتی شرطی رعایت نشود، خطا پرتاب کن.
public class Main {
static void checkAge(int age) {
if (age < 18) {
throw new ArithmeticException("Access denied - You must be at least 18 years old.");
} else {
System.out.println("Access granted - You are old enough!");
}
}
public static void main(String[] args) {
checkAge(15);
}
}
مثالِ بدون استثنا
اگر شرط درست باشد، خطایی رخ نمی دهد. چاپ موفق داریم.
checkAge(20);
گام های عملی سریع
- پیام خطا را کامل بخوان.
- کد مشکوک را داخل try بگذار.
- در catch پیام واضح چاپ کن.
- در finally منابع را آزاد کن.
- شرط های خاص را با throw کنترل کن.
نکته: برای آشنایی با خطاها، صفحه خطاها را ببین. همچنین پیش از این بخش، دیباگ را مطالعه کن.
جمع بندی سریع
- استثناها جاوا را با try...catch بگیر.
- finally همیشه اجرا می شود.
- با throw خطای سفارشی بساز.
- پیام ها را کوتاه و واضح بنویس.
- منابع را به موقع آزاد کن.