Maison  >  Article  >  Java  >  En Java, que signifie relancer une exception ?

En Java, que signifie relancer une exception ?

WBOY
WBOYavant
2023-09-01 16:57:051354parcourir

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;
}

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();
}

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();
   }
}

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)

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)

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer