Java - Throws dan Throw: Memahami Pengendalian Pengecualian

Halo para programmer Java masa depan! Hari ini, kita akan melakukan perjalanan yang menarik ke dalam dunia pengendalian pengecualian di Java. Khususnya, kita akan fokus pada kata kunci throws dan throw. Jangan khawatir jika Anda masih baru dalam pemrograman; saya akan memandu Anda langkah demi langkah, sama seperti yang saya lakukan untuk banyak siswa selama tahun-tahun pengajaran saya. Mari kita melompatlah!

Java - throw Exception

Apa itu Pengecualian?

Sebelum kita melompat ke throws dan throw, mari kita singkat ulang apa itu pengecualian. Bayangkan Anda sedang memasak makanan, mengikuti resep. Semuanya berjalan mulus sampai - ups! - Anda menyadari bahwa Anda kehabisan bahan penyusun yang penting. Itu mirip dengan pengecualian dalam pemrograman: peristiwa yang tidak diharapkan yang mengganggu aliran normal dari program Anda.

Mengerti throws dan throw

Kata Kunci throws

Kata kunci throws digunakan dalam deklarasi metode untuk menunjukkan bahwa metode ini mungkin akan melemparkan satu atau lebih jenis pengecualian. Itu seperti menempatkan tanda "Perhatian: Lantai Basah" - Anda memperingatkan siapa pun yang menggunakan metode ini bahwa mereka perlu siap untuk pengecualian potensial.

Kata Kunci throw

Di sisi lain, throw digunakan untuk membuat dan melemparkan pengecualian secara aktual. Itu seperti benar-benar kericikan air di atas lantai - Anda membuat situasi pengecualian.

Sintaks

Mari kita lihat sintaks untuk keduanya:

// Menggunakan throws dalam deklarasi metode
public void myMethod() throws ExceptionType {
// Badan metode
}

// Menggunakan throw untuk membuat pengecualian
throw new ExceptionType("Pesan kesalahan");

Contoh Java Throws dan Throw

Mari kita mulai dengan contoh sederhana untuk mengilustrasikan throws dan throw:

public class DivisionExample {
public static double divide(int a, int b) throws ArithmeticException {
if (b == 0) {
throw new ArithmeticException("Tidak dapat membagi dengan nol!");
}
return (double) a / b;
}

public static void main(String[] args) {
try {
System.out.println(divide(10, 2));  // Ini berjalan baik
System.out.println(divide(10, 0));  // Ini akan melemparkan pengecualian
} catch (ArithmeticException e) {
System.out.println("Terjadi kesalahan: " + e.getMessage());
}
}
}

Mari kita pecahkan ini:

  1. Kita mendeklarasikan metode divide yang throws ArithmeticException.
  2. Di dalam metode, kita throw pengecualian ArithmeticException baru jika b adalah nol.
  3. Di dalam metode main, kita menggunakan blok try-catch untuk menangani pengecualian potensial.

Ketika Anda menjalankan ini, Anda akan melihat:

5.0
Terjadi kesalahan: Tidak dapat membagi dengan nol!

Contoh Lain

Contoh 1: Pengecualian Kustom

Mari kita buat pengecualian kustom dan gunakan itu:

class AgeException extends Exception {
public AgeException(String message) {
super(message);
}
}

public class VotingSystem {
public static void checkEligibility(int age) throws AgeException {
if (age < 18) {
throw new AgeException("Anda harus berusia 18 tahun atau lebih untuk memilih.");
} else {
System.out.println("Anda berhak untuk memilih!");
}
}

public static void main(String[] args) {
try {
checkEligibility(20);  // Ini baik
checkEligibility(15);  // Ini akan melemparkan pengecualian
} catch (AgeException e) {
System.out.println("Kesalahan: " + e.getMessage());
}
}
}

Contoh ini menunjukkan cara membuat dan menggunakan pengecualian kustom Anda sendiri.

Contoh 2: Pengecualian Multiple

Mari kita lihat cara menangani pengecualian multiple:

import java.io.*;

public class FileReadExample {
public static void readFile(String filename) throws FileNotFoundException, IOException {
FileReader file = new FileReader(filename);
BufferedReader reader = new BufferedReader(file);

String line = reader.readLine();
while (line != null) {
System.out.println(line);
line = reader.readLine();
}

reader.close();
}

public static void main(String[] args) {
try {
readFile("example.txt");
} catch (FileNotFoundException e) {
System.out.println("Kesalahan: File tidak ditemukan.");
} catch (IOException e) {
System.out.println("Kesalahan: Masalah saat membaca file.");
}
}
}

Contoh ini menunjukkan cara menangani jenis pengecualian multiple yang dapat dilemparkan oleh metode.

Praktik Terbaik

  1. Spesifik: Hanya lemparkan pengecualian yang sesuai dengan kondisi kesalahan.
  2. Dokumentasi Baik: Selalu dokumentasikan pengecualian yang dapat dilemparkan metode Anda di Javadoc metode.
  3. Handle atau Deklarasikan: baik menangani pengecualian dengan blok try-catch atau deklarasikan dengan throws.
  4. Jangan Kegunakan Berlebihan: Jangan gunakan pengecualian untuk kontrol aliran normal. Mereka adalah untuk keadaan yang ekseptional.

Kesimpulan

Mengerti throws dan throw adalah penting untuk pengendalian pengecualian yang baik di Java. Hal ini memungkinkan Anda menulis kode yang lebih robust dan tahan terhadap kesalahan. Ingat, pengecualian adalah teman Anda - mereka membantu Anda mengantisipasi dan menangani masalah dengan grace.

Sebagai Anda melanjutkan perjalanan Java Anda, Anda akan menemukan banyak situasi di mana pengendalian pengecualian menjadi sangat berharga. Tetap latihan, dan segera itu akan menjadi kebiasaan.

Happy coding, para master Java masa depan!

Credits: Image by storyset