Wenn eine Ausnahme in einem Catch-Block zwischengespeichert wird, können Sie die Ausnahme mit dem Schlüsselwort throw erneut auslösen (zum Auslösen eines Ausnahmeobjekts).
Wenn Sie eine Ausnahme erneut auslösen, können Sie dieselbe Ausnahme wie im nicht angepassten Fall auslösen –
try { int result = (arr[a])/(arr[b]); System.out.println("Result of "+arr[a]+"/"+arr[b]+": "+result); } catch(ArithmeticException e) { throw e; }
Alternativ können Sie sie in eine neue Ausnahme einschließen und auslösen. Wenn Sie eine zwischengespeicherte Ausnahme in eine andere Ausnahme einschließen und auslösen, wird dies als Ausnahmeverkettung oder Ausnahmeumbruch bezeichnet. Auf diese Weise können Sie Ihre Ausnahme so anpassen, dass sie eine Ausnahme auf höherer Ebene auslöst und dabei die Abstraktion beibehält.
try { int result = (arr[a])/(arr[b]); System.out.println("Result of "+arr[a]+"/"+arr[b]+": "+result); } catch(ArrayIndexOutOfBoundsException e) { throw new IndexOutOfBoundsException(); }
Im folgenden Java-Beispiel löst unser Code möglicherweise zwei Ausnahmen aus, ArrayIndexOutOfBoundsException und ArithmeticException, in demoMethod(). Wir fangen diese beiden Ausnahmen in zwei verschiedenen Catch-Blöcken ab.
Im Catch-Block lösen wir die andere Ausnahme direkt erneut aus, indem wir eine der Ausnahmen in eine Ausnahme auf höherer Ebene einschließen. Die chinesische Übersetzung von
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)
Das obige ist der detaillierte Inhalt vonWas bedeutet es in Java, eine Ausnahme erneut auszulösen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!