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, Throw & Throws Dijelaskan

Menguasai Penanganan Pengecualian Java

Panduan ini memandu Anda melalui mekanisme penanganan pengecualian Java—try-catch, finally, throw, dan throws—dengan contoh yang jelas dan tips praktik terbaik.

Dalam pelajaran sebelumnya kita memperkenalkan pengecualian Java dan mengapa mereka mengganggu aliran program. Menangani pengecualian tersebut dengan anggun esensial untuk kode yang kokoh dan mudah dipelihara.

Di bawah ini adalah strategi utama untuk mengelola pengecualian di Java:


1. Menggunakan Blok try…catch

Konstruk try…catch adalah sumbu model penanganan kesalahan Java. Tempatkan kode apa pun yang mungkin melempar pengecualian di dalam blok try, dan tangkap pengecualian spesifik setelahnya.

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

Klausa catch wajib setiap kali blok try muncul; ia menangkap pengecualian dan memungkinkan Anda merespons dengan tepat.

Contoh: Menangani ArithmeticException

class Main { public static void main(String[] args) { try { int divideByZero = 5 / 0; System.out.println("Sisa kode dalam blok try"); } catch (ArithmeticException e) { System.out.println("ArithmeticException => " + e.getMessage()); } } }

Output

ArithmeticException => / by zero

Dalam cuplikan ini, pembagian dengan nol memicu ArithmeticException. Pengecualian ditangkap, blok catch dieksekusi, dan kode apa pun yang mengikuti pengecualian dalam blok try dilewati.

Jika blok try selesai tanpa melempar, blok catch cukup dilewati.


2. Memanfaatkan Blok finally

Sebuah blok finally selalu berjalan, terlepas dari apakah pengecualian dilempar atau tidak. Ini adalah tempat ideal untuk tugas pembersih—menutup file, melepaskan sumber daya, atau mencatat log.

Hanya satu blok finally yang dapat menyertai pernyataan try tertentu.

try { // kode } catch (ExceptionType1 e1) { // tangani } finally { // selalu dieksekusi }

Contoh: finally Setelah Pengecualian

class Main { public static void main(String[] args) { try { int divideByZero = 5 / 0; } catch (ArithmeticException e) { System.out.println("ArithmeticException => " + e.getMessage()); } finally { System.out.println("Ini adalah blok finally"); } } }

Output

ArithmeticException => / by zero Ini adalah blok finally

Blok finally dieksekusi setelah blok catch, memastikan kode pembersih penting berjalan meskipun pengecualian terjadi.

Praktik terbaik: Gunakan finally untuk kode apa pun yang harus berjalan terlepas dari keberhasilan atau kegagalan, seperti menutup stream atau mereset state bersama.


3. Melempar Pengecualian Secara Eksplisit dan Mendeklarasikan Throws

Kata kunci throw memungkinkan Anda untuk melempar pengecualian secara manual. Saat dilempar, kontrol meloncat langsung ke blok catch yang cocok terdekat.

Contoh: Menggunakan throw

class Main { public static void divideByZero() { throw new ArithmeticException("Mencoba membagi dengan 0"); } public static void main(String[] args) { divideByZero(); } }

Output

Exception in thread "main" java.lang.ArithmeticException: Mencoba membagi dengan 0 at Main.divideByZero(Main.java:5) at Main.main(Main.java:9)

Klausa throws, sebaliknya, mendeklarasikan bahwa suatu metode mungkin menyebarkan pengecualian yang diperiksa tertentu. Ini memberikan sinyal kepada pemanggil bahwa mereka harus menangani atau menyebarkan lebih lanjut pengecualian tersebut.

Contoh: Menggunakan throws dengan File I/O

import java.io.*; class Main { // Deklarasikan bahwa metode ini dapat melempar IOException public static void findFile() throws IOException { File newFile = new File("test.txt"); FileInputStream stream = new FileInputStream(newFile); } public static void main(String[] args) { try { findFile(); } catch (IOException e) { System.out.println(e); } } }

Output

java.io.FileNotFoundException: test.txt (The system cannot find the file specified)

Jika file tidak ada, FileInputStream melempar FileNotFoundException, yang merupakan subclass dari IOException. Karena findFile() mendeklarasikan throws IOException, metode main harus menanganinya.

Saat suatu metode tidak menangkap pengecualian secara internal, Anda harus mendeklarasikannya dengan throws untuk memberitahu pemanggil tentang potensi kegagalan.

Untuk wawasan lebih dalam, jelajahi dokumentasi throw dan throws Java.


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. Menguasai Java Try-with-Resources: Manajemen Sumber Daya Otomatis Dijelaskan
  9. Anotasi Java Dijelaskan: Jenis, Penempatan, dan Contoh Praktis
  10. Pernyataan Java: Panduan Praktis untuk Mendeteksi Bug dan Memastikan Keandalan Kode