Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> java

Java menangkap Beberapa Pengecualian

Java menangkap Beberapa Pengecualian

Dalam tutorial ini, kita akan belajar menangani beberapa pengecualian di Java dengan bantuan contoh.

Sebelum Java 7, kami harus menulis beberapa kode penanganan pengecualian untuk berbagai jenis pengecualian meskipun ada redundansi kode.

Mari kita ambil contoh.

Contoh 1:Beberapa blok tangkapan

class Main {
  public static void main(String[] args) {
    try {
      int array[] = new int[10];
      array[10] = 30 / 0;
    } catch (ArithmeticException e) {
      System.out.println(e.getMessage());
    } catch (ArrayIndexOutOfBoundsException e) {
      System.out.println(e.getMessage());
    } 
  }
}

Keluaran

/ by zero

Dalam contoh ini, dua pengecualian mungkin terjadi:

Kami mencetak pesan pengecualian di catch blok yaitu kode duplikat.

Keterkaitan operator penugasan = kanan ke kiri, jadi ArithmeticException dilempar terlebih dahulu dengan pesan / oleh nol .


Menangani Beberapa Pengecualian dalam Blok tangkapan

Di Java SE 7 dan yang lebih baru, sekarang kita dapat menangkap lebih dari satu jenis pengecualian dalam satu catch blokir.

Setiap jenis pengecualian yang dapat ditangani oleh catch blok dipisahkan menggunakan batang vertikal atau pipa | .

Sintaksnya adalah:

try {
  // code
} catch (ExceptionType1 | Exceptiontype2 ex) { 
  // catch block
}

Contoh 2:Blok multi-tangkap

class Main {
  public static void main(String[] args) {
    try {
      int array[] = new int[10];
      array[10] = 30 / 0;
    } catch (ArithmeticException | ArrayIndexOutOfBoundsException e) {
      System.out.println(e.getMessage());
    }
  }
}

Keluaran

/ by zero

Menangkap beberapa pengecualian dalam satu catch blok mengurangi duplikasi kode dan meningkatkan efisiensi.

Bytecode yang dihasilkan saat mengkompilasi program ini akan lebih kecil daripada program yang memiliki banyak catch blok karena tidak ada redundansi kode.

Catatan: Jika catch blok menangani beberapa pengecualian, parameter catch secara implisit final . Ini berarti kami tidak dapat menetapkan nilai apa pun untuk menangkap parameter.


Menangkap Pengecualian dasar

Saat menangkap beberapa pengecualian dalam satu catch blok, aturan digeneralisasi ke khusus.

Ini berarti jika ada hierarki pengecualian di catch blok, kita hanya dapat menangkap pengecualian dasar daripada menangkap beberapa pengecualian khusus.

Mari kita ambil contoh.

Contoh 3:Hanya menangkap kelas pengecualian dasar

class Main {
  public static void main(String[] args) {
    try {
      int array[] = new int[10];
      array[10] = 30 / 0;
    } catch (Exception e) {
      System.out.println(e.getMessage());
    }
  }
}

Keluaran

/ by zero

Kita tahu bahwa semua kelas pengecualian adalah subkelas dari Exception kelas. Jadi, alih-alih menangkap beberapa pengecualian khusus, kita cukup menangkap Exception kelas.


Jika kelas pengecualian dasar telah ditentukan dalam catch blok, jangan gunakan kelas pengecualian anak dalam catch yang sama memblokir. Jika tidak, kita akan mendapatkan kesalahan kompilasi.

Mari kita ambil contoh.

Contoh 4:Menangkap kelas dasar dan pengecualian anak

class Main {
  public static void main(String[] args) {
    try {
      int array[] = new int[10];
      array[10] = 30 / 0;
    } catch (Exception | ArithmeticException | ArrayIndexOutOfBoundsException e) {
      System.out.println(e.getMessage());
    }
  }
}

Keluaran

Main.java:6: error: Alternatives in a multi-catch statement cannot be related by subclassing

Dalam contoh ini, ArithmeticException dan ArrayIndexOutOfBoundsException keduanya adalah subkelas dari Exception kelas. Jadi, kami mendapatkan kesalahan kompilasi.


java

  1. Operator Jawa
  2. Komentar Jawa
  3. Java untuk setiap Loop
  4. String Jawa
  5. Antarmuka Jawa
  6. Kelas Anonim Java
  7. Jawa coba ... tangkap
  8. Lemparan Jawa
  9. Java mencoba-dengan-sumber daya
  10. Anotasi Jawa