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

Menguasai Penanganan Multi-Pengecualian di Java

Menguasai Penanganan Multi-Pengecualian di Java

Temukan cara menangkap beberapa pengecualian dengan satu blok catch, sederhanakan kode Anda, dan hindari kesalahan umum.

Sebelum Java 7, pengembang harus menulis blok catch terpisah untuk setiap jenis pengecualian, bahkan ketika logika penanganan identik.

Pertimbangkan skenario berikut.

Contoh 1: Blok catch terpisah

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

Output

/ by zero

Dalam contoh ini dua masalah berbeda dapat timbul:

Kedua blok catch melakukan tindakan yang sama, mengarah pada kode duplikat.


Menangkap Beberapa Pengecualian dalam Satu Blok

Sejak Java SE 7, Anda dapat menggabungkan beberapa jenis pengecualian dalam satu blok catch menggunakan pemisah pipe (|).

Sintaks:

try { // kode } catch (ExceptionType1 | ExceptionType2 ex) { // handler } 

Contoh 2: Blok multi-catch

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

Output

/ by zero

Dengan menggabungkan handler, kode menjadi lebih bersih, bytecode lebih kecil, dan pemeliharaan lebih mudah.

Catatan: Dalam multi-catch, parameter secara implisit final, jadi Anda tidak dapat menetapkan ulangnya.


Menggunakan Kelas Pengecualian Dasar

Jika beberapa pengecualian yang ditangkap memiliki nenek moyang yang sama, Anda dapat menangkap nenek moyang itu daripada mencantumkan setiap subclass.

Contoh 3: Menangkap kelas dasar Exception

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

Output

/ by zero

Karena setiap pengecualian spesifik di Java memperluas Exception, satu blok catch ini menangani semua skenario di atas.


Jika pengecualian dasar sudah ditangkap, menyertakan subclass-nya dalam blok catch yang sama akan memicu kesalahan kompilasi.

Contoh 4: Kombinasi yang tidak valid antara pengecualian dasar dan 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()); } } } 

Output

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

Kesalahan ini terjadi karena ArithmeticException dan ArrayIndexOutOfBoundsException adalah subclass dari Exception, melanggar aturan bahasa.


java

  1. Menguasai Operator Java: Tipe, Sintaks, & Contoh Praktis
  2. Komentar Java: Tipe, Penggunaan, dan Best Practices
  3. Menguasai Java Enhanced For Loop: Sintaks, Contoh, dan Best Practices
  4. Menguasai String Java: Pembuatan, Metode, dan Best Practices
  5. Menguasai Antarmuka Java: Konsep, Implementasi, dan Praktik Terbaik
  6. Menguasai Kelas Dalam Anonim Java: Definisi, Sintaks, dan Contoh Praktis
  7. Menguasai Penanganan Pengecualian Java: Try, Catch, Finally, dan Sumber Daya
  8. Java throw vs throws: Menguasai Penanganan Pengecualian dengan Contoh Praktis
  9. Menguasai Java Try-with-Resources: Manajemen Sumber Daya Otomatis Dijelaskan
  10. Anotasi Java Dijelaskan: Jenis, Penempatan, dan Contoh Praktis