Bloc Java multi-catch
Un bloc try peut être suivi d’un ou plusieurs blocs catch. Chaque bloc catch doit contenir un gestionnaire d'exceptions différent. Ainsi, si vous devez effectuer différentes tâches lors de l'apparition de différentes exceptions, utilisez le bloc Java multi-catch.
Points à retenir
- À la fois, une seule exception se produit et à la fois, un seul bloc catch est exécuté.
- Tous les blocs catch doivent être classés du plus spécifique au plus général, c'est-à-dire que catch pour ArithmeticException doit précéder catch pour Exception.
Organigramme du bloc multi-prises
Exemple 1
Voyons un exemple simple de bloc multi-catch Java.
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'); } }Testez-le maintenant
Sortir:
java comment convertir une chaîne en entier
Arithmetic Exception occurs rest of the code
Exemple 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'); } }Testez-le maintenant
Sortir:
ArrayIndexOutOfBounds Exception occurs rest of the code
Dans cet exemple, le bloc try contient deux exceptions. Mais à la fois, une seule exception se produit et le bloc catch correspondant est exécuté.
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'); } }Testez-le maintenant
Sortir:
Arithmetic Exception occurs rest of the code
Exemple 4
Dans cet exemple, nous générons NullPointerException, mais nous n'avons pas fourni le type d'exception correspondant. Dans ce cas, le bloc catch contenant la classe d'exception parent Exception sera invoqué.
MultipleCatchBlock4.java
qu'est-ce que l'ini du bureau
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'); } }Testez-le maintenant
Sortir:
Parent Exception occurs rest of the code
Exemple 5
Voyons un exemple, pour gérer l'exception sans conserver l'ordre des exceptions (c'est-à-dire de la plus spécifique à la plus générale).
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...'); } }Testez-le maintenant
Sortir:
Compile-time error