Rumah > Java > javaTutorial > Di Jawa, apakah maksud melemparkan semula pengecualian?

Di Jawa, apakah maksud melemparkan semula pengecualian?

WBOY
Lepaskan: 2023-09-01 16:57:05
ke hadapan
1398 orang telah melayarinya

Di Jawa, apakah maksud melemparkan semula pengecualian?

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;
}
Salin selepas log masuk

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();
}
Salin selepas log masuk

Contoh

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();
   }
}
Salin selepas log masuk

Output1

Terjemahan bahasa Cina ialah:

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)
Salin selepas log masuk

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)
Salin selepas log masuk

Atas ialah kandungan terperinci Di Jawa, apakah maksud melemparkan semula pengecualian?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan