Apabila pengecualian dicache dalam blok tangkapan, anda boleh melontar semula pengecualian menggunakan kata kunci lontaran (untuk melontar objek pengecualian).
Apabila melontar semula pengecualian, anda boleh melontar pengecualian yang sama seperti bekas yang tidak dilaraskan -
try { int result = (arr[a])/(arr[b]); System.out.println("Result of "+arr[a]+"/"+arr[b]+": "+result); } catch(ArithmeticException e) { throw e; }
Sebagai alternatif, bungkusnya dengan pengecualian baharu dan buangnya. Apabila anda membalut pengecualian yang dicache dalam pengecualian lain dan membuangnya, ini dipanggil rantaian pengecualian atau pembalut pengecualian, dengan melakukan ini anda boleh menyesuaikan pengecualian anda untuk membuang pengecualian tahap yang lebih tinggi, mengekalkan abstraksi .
try { int result = (arr[a])/(arr[b]); System.out.println("Result of "+arr[a]+"/"+arr[b]+": "+result); } catch(ArrayIndexOutOfBoundsException e) { throw new IndexOutOfBoundsException(); }
Dalam contoh Java berikut, kod kami mungkin membuang dua pengecualian, ArrayIndexOutOfBoundsException dan ArithmeticException, dalam demoMethod(). Kami menangkap dua pengecualian ini dalam dua blok tangkapan yang berbeza.
Dalam blok tangkapan, kami melontar semula pengecualian lain secara langsung dengan membungkus salah satu pengecualian dalam pengecualian peringkat lebih tinggi.
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)
Atas ialah kandungan terperinci Di Jawa, apakah maksud melemparkan semula pengecualian?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!