Maison > Java > javaDidacticiel > le corps du texte

En Java, que signifie relancer une exception ?

WBOY
Libérer: 2023-09-01 16:57:05
avant
1364 Les gens l'ont consulté

En Java, que signifie relancer une exception ?

Lorsqu'une exception est mise en cache dans un bloc catch, vous pouvez relancer l'exception en utilisant le mot-clé throw (pour lancer un objet d'exception).

Lorsque vous relancez une exception, vous pouvez lancer la même exception que le cas non ajusté -

try {
   int result = (arr[a])/(arr[b]);
   System.out.println("Result of "+arr[a]+"/"+arr[b]+": "+result);
}
catch(ArithmeticException e) {
   throw e;
}
Copier après la connexion

Vous pouvez également l'envelopper dans une nouvelle exception et la lancer. Lorsque vous encapsulez une exception mise en cache dans une autre exception et que vous la lancez, c'est ce qu'on appelle le chaînage d'exceptions ou l'enveloppement d'exceptions. Ce faisant, vous pouvez adapter votre exception pour lancer une exception de niveau supérieur, en conservant l'abstraction.

try {
   int result = (arr[a])/(arr[b]);
   System.out.println("Result of "+arr[a]+"/"+arr[b]+": "+result);
}
catch(ArrayIndexOutOfBoundsException e) {
   throw new IndexOutOfBoundsException();
}
Copier après la connexion

Exemple

Dans l'exemple Java suivant, notre code peut lever deux exceptions, ArrayIndexOutOfBoundsException et ArithmeticException, dans demoMethod(). Nous captons ces deux exceptions dans deux blocs catch différents.

Dans le bloc catch, nous renvoyons l'autre exception directement en encapsulant l'une des exceptions dans une exception de niveau supérieur. La traduction chinoise de

Demo

import java.util.Arrays;
import java.util.Scanner;
public class RethrowExample {
   public void demoMethod() {
      Scanner sc = new Scanner(System.in);
      int[] arr = {10, 20, 30, 2, 0, 8};
      System.out.println("Array: "+Arrays.toString(arr));
      System.out.println("Choose numerator and denominator(not 0) from this array (enter positions 0 to 5)");
      int a = sc.nextInt();
      int b = sc.nextInt();
      try {
         int result = (arr[a])/(arr[b]);
         System.out.println("Result of "+arr[a]+"/"+arr[b]+": "+result);
      }
      catch(ArrayIndexOutOfBoundsException e) {
         throw new IndexOutOfBoundsException();
      }
      catch(ArithmeticException e) {
         throw e;
      }
   }
   public static void main(String [] args) {
      new RethrowExample().demoMethod();
   }
}
Copier après la connexion

Output1

est :

Output1

Array: [10, 20, 30, 2, 0, 8]
Choose numerator and denominator(not 0) from this array (enter positions 0 to 5)
0
4
Exception in thread "main" java.lang.ArithmeticException: / by zero
   at myPackage.RethrowExample.demoMethod(RethrowExample.java:16)
   at myPackage.RethrowExample.main(RethrowExample.java:25)
Copier après la connexion

Output2

Array: [10, 20, 30, 2, 0, 8]
Choose numerator and denominator(not 0) from this array (enter positions 0 to 5)
124
5
Exception in thread "main" java.lang.IndexOutOfBoundsException
   at myPackage.RethrowExample.demoMethod(RethrowExample.java:17)
   at myPackage.RethrowExample.main(RethrowExample.java:23)
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal