Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Java

Maîtriser la gestion multi-exceptions en Java

Maîtriser la gestion multi-exceptions en Java

Découvrez comment attraper plusieurs exceptions avec un seul bloc catch, rationaliser votre code et éviter les pièges courants.

Avant Java 7, les développeurs devaient écrire des blocs catch séparés pour chaque type d'exception, même quand la logique de gestion était identique.

Considérez le scénario suivant.

Exemple 1 : Blocs catch séparés

class Main { public static void main(String[] args) { try { int[] array = new int[10]; array[10] = 30 / 0; } catch (ArithmeticException e) { System.out.println(e.getMessage()); } catch (ArrayIndexOutOfBoundsException e) { System.out.println(e.getMessage()); } } } 

Sortie

/ by zero

Dans cet exemple, deux problèmes distincts peuvent survenir :

Les deux blocs catch effectuent la même action, menant à du code dupliqué.


Attraper plusieurs exceptions dans un seul bloc

Depuis Java SE 7, vous pouvez combiner plusieurs types d'exceptions en un seul bloc catch en utilisant le séparateur pipe (|).

Syntaxe :

try { // code } catch (ExceptionType1 | ExceptionType2 ex) { // gestionnaire } 

Exemple 2 : Bloc multi-catch

class Main { public static void main(String[] args) { try { int[] array = new int[10]; array[10] = 30 / 0; } catch (ArithmeticException | ArrayIndexOutOfBoundsException e) { System.out.println(e.getMessage()); } } } 

Sortie

/ by zero

En fusionnant les gestionnaires, le code est plus propre, le bytecode plus petit, et la maintenance plus facile.

Note : Dans un multi-catch, le paramètre est implicitement final, donc vous ne pouvez pas le réassigner.


Utilisation d'une classe d'exception de base

Si plusieurs exceptions attrapées partagent un ancêtre commun, vous pouvez attraper cet ancêtre au lieu de lister chaque sous-classe.

Exemple 3 : Attraper la classe de base Exception

class Main { public static void main(String[] args) { try { int[] array = new int[10]; array[10] = 30 / 0; } catch (Exception e) { System.out.println(e.getMessage()); } } } 

Sortie

/ by zero

Puisque chaque exception spécifique en Java étend Exception, ce bloc catch unique gère tous les scénarios ci-dessus.


Si une exception de base est déjà attrapée, inclure ses sous-classes dans le même catch déclenchera une erreur de compilation.

Exemple 4 : Combinaison invalide d'exceptions de base et filles

class Main { public static void main(String[] args) { try { int[] array = new int[10]; array[10] = 30 / 0; } catch (Exception | ArithmeticException | ArrayIndexOutOfBoundsException e) { System.out.println(e.getMessage()); } } } 

Sortie

Main.java:6: error: Alternatives in a multi-catch statement cannot be related by subclassing

Cette erreur survient parce que ArithmeticException et ArrayIndexOutOfBoundsException sont des sous-classes de Exception, violant la règle du langage.

Java

  1. Maîtriser les opérateurs Java : Types, syntaxe et exemples pratiques
  2. Commentaires Java : Types, utilisation et bonnes pratiques
  3. Maîtriser la boucle for améliorée en Java : Syntaxe, exemples et bonnes pratiques
  4. Maîtriser les chaînes de caractères en Java : Création, méthodes et bonnes pratiques
  5. Maîtriser les interfaces Java : concepts, implémentation et bonnes pratiques
  6. Maîtriser les classes internes anonymes en Java : définition, syntaxe et exemples pratiques
  7. Maîtriser la gestion d'exceptions Java : try, catch, finally et ressources
  8. Java throw vs throws : maîtriser la gestion d'exceptions avec exemples pratiques
  9. Maîtriser le try-with-resources Java : gestion automatique des ressources expliquée