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

Menguasai Penanganan Pengecualian Java: Try, Catch, Finally, dan Sumber Daya

Menguasai Penanganan Pengecualian Java

Jelajahi bagaimana mekanisme try-catch-finally dan try-with-resources Java membantu Anda menulis kode yang tangguh dan bebas kesalahan.

Konstruk try…catch adalah pusat penanganan kesalahan yang anggun di Java. Ini memungkinkan program untuk mengantisipasi masalah runtime dan merespons tanpa crash.

Di bawah ini adalah sintaks kanonik:

try { // kode yang mungkin melempar pengecualian } catch (ExceptionType e) { // tangani pengecualian }

Blok try berisi kode yang mungkin melempar pengecualian. Jika pengecualian terjadi, kontrol meloncat ke blok catch yang cocok, yang kemudian dapat bereaksi dengan tepat.

Contoh: Menangani ArithmeticException

class Main { public static void main(String[] args) { try { int result = 5 / 0; System.out.println("Baris ini tidak pernah tercapai."); } catch (ArithmeticException e) { System.out.println("Tangkap: " + e.getMessage()); } } }

Output

Tangkap: / by zero

Di sini, pembagian dengan nol memicu ArithmeticException. Blok catch menangkapnya, mencegah crash program.

Tips: Anda dapat menghilangkan blok catch jika Anda hanya tertarik untuk memastikan blok finally berjalan, tetapi blok catch tidak dapat ada tanpa try yang sebelumnya.


Menggunakan Blok Finally

Klausa finally menjamin eksekusi terlepas dari apakah pengecualian dilempar atau tidak:

class Main { public static void main(String[] args) { try { int result = 5 / 0; } finally { System.out.println("Tindakan pembersih berjalan di sini."); } } }

Output

Tindakan pembersih berjalan di sini. Exception in thread "main" java.lang.ArithmeticException: / by zero at Main.main(Main.java:4)

Blok finally dieksekusi setelah blok try, bahkan ketika pengecualian mengganggu aliran normal.


Menggabungkan Try, Catch, dan Finally

Kode yang kokoh biasanya menggunakan ketiga klausa untuk menangani kesalahan, melaporkan mereka, dan membersihkan sumber daya. Pertimbangkan contoh penanganan file ini:

import java.io.*; class ListOfNumbers { private int[] list = {5, 6, 8, 9, 2}; public void writeList() { PrintWriter out = null; try { System.out.println("Mencoba menulis ke file."); out = new PrintWriter(new FileWriter("OutputFile.txt")); for (int i = 0; i < 7; i++) { out.println("Nilai pada: " + i + " = " + list[i]); } } catch (Exception e) { System.out.println("Pengecualian: " + e.getMessage()); } finally { if (out != null) { System.out.println("Menutup PrintWriter"); out.close(); } else { System.out.println("PrintWriter tidak dibuka."); } } } } class Main { public static void main(String[] args) { new ListOfNumbers().writeList(); } }

Output

Mencoba menulis ke file. Pengecualian: Index 5 out of bounds for length 5 Menutup PrintWriter

Perhatikan pelanggaran batas array memicu pengecualian, yang ditangkap dan dilaporkan. Blok finally memastikan PrintWriter ditutup, mencegah kebocoran sumber daya.

Praktik terbaik: Selalu letakkan logika pembersih—menutup file, soket, atau koneksi database—di dalam blok finally.

Catatan: finally mungkin tidak berjalan jika JVM keluar (misalnya, System.exit()), pengecualian terjadi di dalam finally, atau thread secara mendadak diakhiri.


Menangani Beberapa Jenis Pengecualian

Satu try dapat diikuti oleh beberapa klausa catch, masing-masing disesuaikan dengan pengecualian tertentu:

class ListOfNumbers { private int[] arr = new int[10]; public void writeList() { try { arr[10] = 11; } catch (NumberFormatException e) { System.out.println("NumberFormatException: " + e.getMessage()); } catch (IndexOutOfBoundsException e) { System.out.println("IndexOutOfBoundsException: " + e.getMessage()); } } } class Main { public static void main(String[] args) { new ListOfNumbers().writeList(); } }

Output

IndexOutOfBoundsException: Index 10 out of bounds for length 10

Runtime pertama mencoba blok catch pertama; jika tidak cocok, ia melanjutkan ke yang berikutnya hingga cocok ditemukan.


Menangkap Beberapa Pengecualian dalam Satu Klausa (Java 7+)

Java 7 memperkenalkan kemampuan untuk menggabungkan jenis pengecualian dalam satu catch, mengurangi duplikasi:

try { // kode berisiko } catch (IOException | SQLException ex) { // penanganan gabungan }

Gunakan fitur ini ketika pengecualian berbeda dapat ditangani secara identik.


Try-With-Resources untuk Pembersihan Otomatis

Pernyataan try-with-resources secara otomatis menutup sumber daya apa pun yang mengimplementasikan AutoCloseable:

try (PrintWriter out = new PrintWriter(new FileWriter("OutputFile.txt"))) { // gunakan sumber daya } catch (IOException e) { // tangani kesalahan I/O }

Karena sumber daya dideklarasikan dalam tanda kurung, ia ditutup secara otomatis saat blok keluar, bahkan jika pengecualian terjadi.

Untuk wawasan lebih dalam, jelajahi dokumentasi resmi Java tentang try-with-resources.

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, Throw & Throws Dijelaskan
  8. Menguasai Penanganan Multi-Pengecualian di Java
  9. Menguasai Java Try-with-Resources: Manajemen Sumber Daya Otomatis Dijelaskan
  10. Anotasi Java Dijelaskan: Jenis, Penempatan, dan Contoh Praktis