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

Di Jawa, apakah maksud melemparkan semula pengecualian?

WBOY
WBOYke hadapan
2023-09-01 16:57:051355semak imbas

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

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

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

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)

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)

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

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam