logo

Java intercepte plusieurs exceptions

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

Java intercepte plusieurs exceptions

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