چند استثنا (Multiple Exceptions)
گاهی چند خطا در یک try رخ می دهد. «استثنا (Exception)» یعنی خطای زمان اجرا. ما می توانیم با چند catch جدا، هر خطا را جدا مدیریت کنیم. این کار جلوی ریختن برنامه را می گیرد.
یک try، چند catch
برای هر نوع استثنا یک catch بگذار. جاوا اولین catchِ مناسب را اجرا می کند. بقیه اجرا نمی شوند.
مثال
public class Main {
public static void main(String[] args) {
try {
int[] numbers = { 1, 2, 3 };
System.out.println(numbers[10]);
int result = 10 / 0;
}
catch (ArrayIndexOutOfBoundsException e) {
System.out.println("Array index does not exist.");
}
catch (ArithmeticException e) {
System.out.println("Cannot divide by zero.");
}
catch (Exception e) {
System.out.println("Something else went wrong.");
}
}
}
نکته: فقط اولین خطا رخ می دهد. پس فقط catch همان اجرا می شود.
ترتیب مهم است
catchهای خاص را اول بگذار. catch عمومی یعنی Exception را آخر بگذار. وگرنه catch عمومی بقیه را می بلعد.
نمونه ترتیب بد
try {
int result = 10 / 0;
}
catch (Exception e) {
System.out.println("General error.");
}
catch (ArithmeticException e) {
System.out.println("Divide by zero.");
}
هشدار: در این ترتیب، catch عمومی زودتر اجرا می شود. catch اختصاصی هرگز نمی رسد.
چند-گرفتاری با یک catch (Multi-Catch)
از جاوا 7 به بعد، چند نوع استثنا را با | می گیریم. وقتی مدیریتشان یکسان است، کد تکراری نمی نویسیم.
مثال
try {
int result = 10 / 0;
int[] numbers = { 1, 2, 3 };
System.out.println(numbers[10]);
}
catch (ArithmeticException | ArrayIndexOutOfBoundsException e) {
System.out.println("Math error or array error occurred.");
}
گام های عملی سریع
- خطاهای محتمل را لیست کن.
- برای هر کدام یک catch بساز.
- catchهای خاص را قبل از Exception بگذار.
- اگر برخورد یکسان است، Multi-Catch استفاده کن.
- پیام ها را کوتاه و روشن بنویس.
برای مبانی مدیریت خطا، بخش try-catch را ببین. برای شروع ساده، صفحه دیباگ مفید است. همچنین برای تمرکز، از چند استثنا جاوا کمک بگیر.
جمع بندی سریع
- چند استثنا جاوا را با چند catch بگیر.
- ترتیب: خاص ها اول، عمومی آخر.
- Multi-Catch کد تکراری را کم می کند.
- فقط اولین خطا اجرا می شود.