Java Çoklu yakalama bloğu
Bir try bloğunun ardından bir veya daha fazla catch bloğu gelebilir. Her catch bloğu farklı bir istisna işleyicisi içermelidir. Bu nedenle, farklı istisnaların ortaya çıkması durumunda farklı görevler gerçekleştirmeniz gerekiyorsa Java multi-catch bloğunu kullanın.
Hatırlanacak noktalar
- Bir seferde yalnızca bir istisna oluşur ve aynı anda yalnızca bir catch bloğu yürütülür.
- Tüm catch blokları en özelden en genele doğru sıralanmalıdır, yani ArithmeticException için catch, Exception için catch'ten önce gelmelidir.
Çoklu Yakalama Bloğunun Akış Şeması
örnek 1
Java çoklu yakalama bloğunun basit bir örneğini görelim.
MultipleCatchBlock1.java
public class MultipleCatchBlock1 { public static void main(String[] args) { try{ int a[]=new int[5]; a[5]=30/0; } catch(ArithmeticException e) { System.out.println('Arithmetic Exception occurs'); } catch(ArrayIndexOutOfBoundsException e) { System.out.println('ArrayIndexOutOfBounds Exception occurs'); } catch(Exception e) { System.out.println('Parent Exception occurs'); } System.out.println('rest of the code'); } }Şimdi Test Edin
Çıktı:
teknolojinin avantajları ve dezavantajları
Arithmetic Exception occurs rest of the code
Örnek 2
MultipleCatchBlock2.java
public class MultipleCatchBlock2 { public static void main(String[] args) { try{ int a[]=new int[5]; System.out.println(a[10]); } catch(ArithmeticException e) { System.out.println('Arithmetic Exception occurs'); } catch(ArrayIndexOutOfBoundsException e) { System.out.println('ArrayIndexOutOfBounds Exception occurs'); } catch(Exception e) { System.out.println('Parent Exception occurs'); } System.out.println('rest of the code'); } }Şimdi Test Edin
Çıktı:
ArrayIndexOutOfBounds Exception occurs rest of the code
Bu örnekte try bloğu iki istisna içermektedir. Ancak aynı anda yalnızca bir istisna oluşur ve buna karşılık gelen catch bloğu yürütülür.
MultipleCatchBlock3.java
public class MultipleCatchBlock3 { public static void main(String[] args) { try{ int a[]=new int[5]; a[5]=30/0; System.out.println(a[10]); } catch(ArithmeticException e) { System.out.println('Arithmetic Exception occurs'); } catch(ArrayIndexOutOfBoundsException e) { System.out.println('ArrayIndexOutOfBounds Exception occurs'); } catch(Exception e) { System.out.println('Parent Exception occurs'); } System.out.println('rest of the code'); } }Şimdi Test Edin
Çıktı:
Arithmetic Exception occurs rest of the code
Örnek 4
Bu örnekte NullPointerException oluşturduk ancak ilgili istisna türünü sağlamadık. Böyle bir durumda ana istisna sınıfını içeren catch bloğu İstisna çağrılacaktır.
MultipleCatchBlock4.java
json dosyası nasıl okunur
public class MultipleCatchBlock4 { public static void main(String[] args) { try{ String s=null; System.out.println(s.length()); } catch(ArithmeticException e) { System.out.println('Arithmetic Exception occurs'); } catch(ArrayIndexOutOfBoundsException e) { System.out.println('ArrayIndexOutOfBounds Exception occurs'); } catch(Exception e) { System.out.println('Parent Exception occurs'); } System.out.println('rest of the code'); } }Şimdi Test Edin
Çıktı:
Parent Exception occurs rest of the code
Örnek 5
İstisnaların sırasını (yani en özelden en genele) korumadan istisnayı ele almak için bir örnek görelim.
MultipleCatchBlock5.java
class MultipleCatchBlock5{ public static void main(String args[]){ try{ int a[]=new int[5]; a[5]=30/0; } catch(Exception e){System.out.println('common task completed');} catch(ArithmeticException e){System.out.println('task1 is completed');} catch(ArrayIndexOutOfBoundsException e){System.out.println('task 2 completed');} System.out.println('rest of the code...'); } }Şimdi Test Edin
Çıktı:
Compile-time error