قبل از یادگیری در مورد گرفتن استثناهای متعدد، باید با مدیریت اولیه استثنا
در جاوا آشنا باشید. با حرکت رو به جلو، فرض می کنیم که شما با یک بلوک try and catch در جاوا آشنا هستید.
چرا به چند بلوک catch در جاوا نیاز داریم؟
چند بلوک catch در جاوا برای رسیدگی به انواع مختلف استثناها استفاده می شود. قبل از راهاندازی جاوا 7، برای گرفتن یک استثنا خاص به یک بلوک catch خاص نیاز داشتیم. این امر بلوک هایی از کد اضافی را ایجاد کرد و از این رو منجر به یک رویکرد ناکارآمد شد. به مثال زیر نگاهی بیندازید تا شاهد استثناهای گرفتار شده باشید. از بلوکهای catch جداگانه برای انواع مختلف استثنا استفاده میکند.مثال با استفاده از بلوکهای Catch جداگانه
import java.util.Arrays;
public class ExceptionHandler {
public static void main(String[] args) {
Integer[] colorsOfASpectrum = { 7, 6, 5, 4, 3, 2, 1, 0 };
try {
System.out.println("Total number of options on a dice are: " + Arrays.toString(colorsOfASpectrum));
// un-comment the following line to see "Index Out of Bounds Exception"
// colorsOfASpectrum[10] = 7; // Index Out of Bounds Exception
System.out.println(colorsOfASpectrum[0] / 0); // Arithmetic Exception
} catch (ArrayIndexOutOfBoundsException e) {
// This catch block executes in case of "Index Out of Bounds Exception"
System.out.println("Array Index Out Of Bounds Exception " + e);
} catch (ArithmeticException e) {
// This catch block executes in case of "Arithmetic Exception"
System.out.println("Arithmetic Exception " + e);
}
System.out.println("\n----Rest of the code executes here----");
}
}
خروجی
کل رنگ ها در یک طیف عبارتند از: [7، 6، 5، 4، 3، 2، 1] Exception مواجه شده با java.lang.ArithmeticException: / با صفر ---- بقیه کدها در اینجا اجرا می شوند----
همانطور که می بینید، در مثال بالا، یک بلوک متفاوت با پرتاب یک استثنا اجرا می شود. راه کارآمدتری برای گرفتن چندین استثنا با استفاده از یک بلوک کد برای گرفتن استثناهای انواع مختلف وجود دارد. به مثال زیر دقت کنید.
مثال استفاده از Multiple Catch Block در جاوا
import java.util.Arrays;
public class MultiExceptionHandler {
public static void main(String[] args) {
Integer[] colorsOfASpectrum = { 7, 6, 5, 4, 3, 2, 1 };
try {
System.out.println("Total colors on a spectrum are: " + Arrays.toString(colorsOfASpectrum));
// colorsOfASpectrum[10] = 7; // Index Out of Bounds Exception
System.out.println(colorsOfASpectrum[0] / 0); // Arithmetic Exception
} catch (ArrayIndexOutOfBoundsException | ArithmeticException e) {
// We don't need two different catch blocks for different kinds of exceptions
// Both exceptions will be handled using this multiple catch block
System.out.println("Exception Encountered " + e);
}
System.out.println("\n----Rest of the code executes here----");
}
}
خروجی
میتوانید خط 13 را برای چاپ به استثنای انواع دیگر لغو نظر کنید.
کل رنگ ها در یک طیف عبارتند از: [7، 6، 5، 4، 3، 2، 1] Exception مواجه شده با java.lang.ArithmeticException: / با صفر ---- بقیه کدها در اینجا اجرا می شوند----
GO TO FULL VERSION