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