Java - Throws dan Throw: Memahami Penanganan Exception

Helo semua, pemrogram Java masa depan! Hari ini, kita akan memulakan perjalanan yang menarik ke atas dunia penanganan exception di dalam Java. Khususnya, kita akan fokus kepada kata kunci throws dan throw. Jangan khawatir jika anda baru mengenal programming; saya akan pandu anda melalui setiap langkah, sama seperti yang saya lakukan untuk pelbagai pelajar selama tahun tahun pengajaran saya. Mari kita melangkah!

Java - throw Exception

Apa itu Exceptions?

Sebelum kita melompat ke throws dan throw, mari kita ikut semula apa itu exceptions. Bayangkan anda sedang untuk memasak makanan, mengikuti resepi. Semua berjalan lancar hingga - oops! - anda menyadari anda kehabisan bahan penting. Itu adalah hampir sama dengan exception dalam programming: sebuah peristiwa yang tidak dijangka yang mengganggu aliran normal program anda.

Mengerti throws dan throw

Kata Kunci throws

Kata kunci throws digunakan dalam pengisytiharan method untuk menunjukkan bahwa method ini mungkin akan melemparkan satu atau lebih jenis exceptions. Ia seperti meletakkan tanda "Awas: Lantai Basah" - anda memberi amaran kepada semua yang menggunakan method ini bahwa mereka perlu untuk bersedia atas potensi exceptions.

Kata Kunci throw

Di pihak lain, throw digunakan untuk membuat dan melemparkan exception secara sebenar. Ia seperti benar-benar kencing di atas lantai - anda mencipta situasi exception.

Sintaks

Mari kita lihat sintaks untuk kedua-duanya:

// Menggunakan throws dalam pengisytiharan method
public void myMethod() throws ExceptionType {
// Badan method
}

// Menggunakan throw untuk membuat exception
throw new ExceptionType("Pesan kesilapan");

Contoh Java Throws dan Throw

Mari kita mula dengan contoh yang ringkas untuk menggambar kedua-dua throws dan throw:

public class DivisionExample {
public static double divide(int a, int b) throws ArithmeticException {
if (b == 0) {
throw new ArithmeticException("Tidak boleh bagi dengan kosong!");
}
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 exception
} catch (ArithmeticException e) {
System.out.println("Kesilapan terjadi: " + e.getMessage());
}
}
}

Mari kita kongsi ini:

  1. Kita mengisytiharkan method divide yang throws ArithmeticException.
  2. Di dalam method, kita throw ArithmeticException baru jika b adalah nol.
  3. Di dalam method main, kita menggunakan blok try-catch untuk mengendalikan potensi exceptions.

Apabila anda menjalankan ini, anda akan lihat:

5.0
Kesilapan terjadi: Tidak boleh bagi dengan kosong!

Lagi Contoh

Contoh 1: Exception Tersuai

Mari kita cipta exception tersuai dan gunakannya:

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 mesti berumur 18 atau lebih untuk untuk mengundi.");
} else {
System.out.println("Anda layak untuk mengundi!");
}
}

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

Contoh ini menunjukkan bagaimana anda boleh membuat dan menggunakan exception tersuai anda sendiri.

Contoh 2: Exception Berbilang

Mari kita lihat bagaimana untuk mengendalikan exception berbilang:

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("Kesilapan: Fail tidak ditemui.");
} catch (IOException e) {
System.out.println("Kesilahan: Masalah membaca fail.");
}
}
}

Contoh ini menunjukkan bagaimana untuk mengendalikan jenis berbilang exceptions yang method mungkin melemparkan.

Praktik Terbaik

  1. Spesifik: Hanya melemparkan exceptions yang sesuai untuk kondisi kesilapan.
  2. Dokumentasi Baik: Sentiasa dokumentasikan exceptions yang method anda boleh melemparkan di atas Javadoc method.
  3. kendalikan atau Deklarasikan: Entah kendalikan exception dengan blok try-catch atau deklarasikan dengan throws.
  4. Jangan Overuse: Jangan gunakan exceptions untuk aliran kendali normal. Ia untuk keadaan kecemasan.

Kesimpulan

Mengerti throws dan throw adalah penting untuk penanganan exception yang baik di dalam Java. Ia membenarkan anda untuk menulis kod yang lebih robust dan tahan terhadap kesilapan. Ingat, exceptions adalah rakan anda - mereka membantu anda untuk mengantisipasi dan mengendalikan masalah dengan graces.

Apabila anda teruskan perjalanan Java anda, anda akan bertemu banyak situasi di mana penanganan exception menjadi berharga. Teruskan untuk berlatih, dan tidak lama lagi ia akan menjadi wajah kedua nature.

Happy coding, pemimpin Java masa depan!

Credits: Image by storyset