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

Java throw vs throws: Menguasai Penanganan Pengecualian dengan Contoh Praktis

Java throw vs throws: Menguasai Penanganan Pengecualian dengan Contoh Praktis

Panduan ini menjelaskan cara menggunakan kata kunci throw dan throws Java untuk penanganan pengecualian yang efektif, diilustrasikan dengan contoh kode dunia nyata.

Di Java, pengecualian terbagi menjadi dua kategori:

Untuk wawasan lebih dalam, lihat Java Exceptions.

Unchecked exceptions biasanya menandai kesalahan pemrograman; mereka harus diperbaiki daripada ditangkap. Checked exceptions, di sisi lain, mewakili kondisi yang harus diketahui dan ditangani oleh pemanggil.


Menggunakan Kata Kunci throws

Klausa throws mendeklarasikan bahwa suatu metode dapat melempar satu atau lebih pengecualian, mendelegasikan tanggung jawab kepada pemanggil. Sintaksnya adalah:

accessModifier returnType methodName() throws ExceptionType1, ExceptionType2 { /* code */ }

Anda dapat mencantumkan beberapa jenis pengecualian, dipisahkan dengan koma.


Contoh 1: Mendeklarasikan Pengecualian yang Diperiksa

import java.io.*; class Main { public static void findFile() throws IOException { // Kode yang mungkin memicu 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 (No such file or directory)

Jika test.txt hilang, FileInputStream melempar FileNotFoundException, yang merupakan subclass dari IOException. Karena findFile() mendeklarasikan throws IOException, metode main() harus menangani atau menyebarkan pengecualian tersebut.


Melempar Beberapa Pengecualian

Anda dapat mendeklarasikan beberapa jenis pengecualian dalam satu klausa throws:

import java.io.*; class Main { public static void findFile() throws NullPointerException, IOException, InvalidClassException { // Potensial melempar NullPointerException … // Potensial melempar IOException … // Potensial melempar InvalidClassException … } public static void main(String[] args) { try { findFile(); } catch (IOException e1) { System.out.println(e1.getMessage()); } catch (InvalidClassException e2) { System.out.println(e2.getMessage()); } } }

Perhatikan bahwa NullPointerException adalah unchecked, jadi tidak perlu ditangkap atau dideklarasikan oleh pemanggil.


Kapan Menggunakan throws vs. try...catch

Menyematkan try...catch dalam setiap metode yang mungkin melempar pengecualian dapat memberatkan kode dan menyelubungi logika. Mendeklarasikan throws menjaga tanda tangan metode tetap bersih dan memungkinkan kode tingkat lebih tinggi untuk memutuskan cara menangani kesalahan.


Menggunakan Kata Kunci throw

Pernyataan throw secara eksplisit melempar instance pengecualian, mentransfer kontrol ke blok catch yang cocok terdekat atau menghentikan program jika tidak ditangani.

Sintaks:

throw throwableObject;

Di sini, throwableObject adalah instance dari Throwable atau salah satu subclass-nya.


Contoh 2: Melempar Pengecualian Tidak Terperiksa

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:3) at Main.main(Main.java:7) exit status 1

Karena ArithmeticException adalah unchecked, menangkapnya opsional.


Contoh 3: Melempar Pengecualian yang Diperiksa

import java.io.*; class Main { public static void findFile() throws IOException { throw new IOException("File tidak ditemukan"); } public static void main(String[] args) { try { findFile(); System.out.println("Sisa kode dalam blok try"); } catch (IOException e) { System.out.println(e.getMessage()); } } }

Output

File tidak ditemukan

Di sini, findFile() melempar IOException yang diperiksa, jadi pemanggil harus menangani atau mendeklarasikannya. Metode main() menunjukkan menangkap pengecualian, mencegah program berakhir.



java

  1. Variabel dan Literal Java: Panduan Lengkap
  2. Menguasai Input & Output Java: Tampilkan, Baca, dan Format Data Anda
  3. Memahami Ekspresi, Pernyataan, dan Blok Java
  4. Kelas dan Objek Java: Panduan Praktis
  5. Kelas dan Metode Abstrak Java: Panduan Lengkap
  6. Menguasai Kelas Bersarang dan Kelas Dalam Java: Jenis, Contoh, dan Praktik Terbaik
  7. Menguasai Penanganan Multi-Pengecualian di Java
  8. Mahir Java Autoboxing dan Unboxing: Contoh Praktis dan Best Practices
  9. Menguasai Penggantian String Java: replace(), replaceAll(), dan replaceFirst() Dijelaskan
  10. Java String toLowerCase() & toUpperCase(): Konversi Huruf Besar/Kecil dengan Kesadaran Lokal