java
Dalam tutorial ini, kita akan belajar tentang pernyataan try catch di Java dengan bantuan contoh.
try...catch blok di Java digunakan untuk menangani pengecualian dan mencegah penghentian program yang tidak normal.
Berikut sintaks try...catch blokir di Jawa.
try{
// code
}
catch(exception) {
// code
}
try blok menyertakan kode yang mungkin menghasilkan pengecualian.
catch blok termasuk kode yang dieksekusi ketika terjadi pengecualian di dalam try blokir.
class Main {
public static void main(String[] args) {
try {
int divideByZero = 5 / 0;
System.out.println("Rest of code in try block");
}
catch (ArithmeticException e) {
System.out.println("ArithmeticException => " + e.getMessage());
}
}
} Keluaran
ArithmeticException => / by zero
Pada contoh di atas, perhatikan baris,
int divideByZero = 5 / 0;
Di sini, kami mencoba membagi angka dengan nol . Dalam hal ini, pengecualian terjadi. Oleh karena itu, kami telah menyertakan kode ini di dalam try blokir.
Ketika program menemukan kode ini, ArithmeticException terjadi. Dan, pengecualian ditangkap oleh catch memblokir dan mengeksekusi kode di dalam catch blokir.
catch blok hanya dijalankan jika ada pengecualian di dalam try blokir.
Catatan :Di Java, kita bisa menggunakan try blokir tanpa catch memblokir. Namun, kami tidak dapat menggunakan catch blokir tanpa try blokir.
Kita juga dapat menggunakan try blok bersama dengan blok akhirnya.
Dalam hal ini, blok akhirnya selalu dieksekusi apakah ada pengecualian di dalam blok coba atau tidak.
class Main {
public static void main(String[] args) {
try {
int divideByZero = 5 / 0;
}
finally {
System.out.println("Finally block is always executed");
}
}
} Keluaran
Finally block is always executed
Exception in thread "main" java.lang.ArithmeticException: / by zero
at Main.main(Main.java:4)
Pada contoh di atas, kami telah menggunakan try blok bersama dengan finally memblokir. Kita dapat melihat bahwa kode di dalam try blok menyebabkan pengecualian.
Namun, kode di dalam finally blok dieksekusi terlepas dari pengecualian.
Di Java, kita juga bisa menggunakan blok terakhir setelah try...catch memblokir. Misalnya,
import java.io.*;
class ListOfNumbers {
// create an integer array
private int[] list = {5, 6, 8, 9, 2};
// method to write data from array to a fila
public void writeList() {
PrintWriter out = null;
try {
System.out.println("Entering try statement");
// creating a new file OutputFile.txt
out = new PrintWriter(new FileWriter("OutputFile.txt"));
// writing values from list array to Output.txt
for (int i = 0; i < 7; i++) {
out.println("Value at: " + i + " = " + list[i]);
}
}
catch (Exception e) {
System.out.println("Exception => " + e.getMessage());
}
finally {
// checking if PrintWriter has been opened
if (out != null) {
System.out.println("Closing PrintWriter");
// close PrintWriter
out.close();
}
else {
System.out.println("PrintWriter not open");
}
}
}
}
class Main {
public static void main(String[] args) {
ListOfNumbers list = new ListOfNumbers();
list.writeList();
}
} Keluaran
Entering try statement Exception => Index 5 out of bounds for length 5 Closing PrintWriter
Pada contoh di atas, kita telah membuat sebuah array bernama list dan file bernama output.txt . Di sini, kami mencoba membaca data dari array dan menyimpannya ke file.
Perhatikan kodenya,
for (int i = 0; i < 7; i++) {
out.println("Value at: " + i + " = " + list[i]);
}
Di sini, ukuran array adalah 5 dan elemen terakhir dari array berada di list[4] . Namun, kami mencoba mengakses elemen di a[5] dan a[6] .
Oleh karena itu, kode menghasilkan pengecualian yang ditangkap oleh blok catch.
Sejak finally blok selalu dieksekusi, kami telah menyertakan kode untuk menutup PrintWriter di dalam blok terakhir.
Ini adalah praktik yang baik untuk menggunakan blok akhirnya untuk memasukkan kode pembersihan penting seperti menutup file atau koneksi.
Catatan :Ada beberapa kasus ketika finally blok tidak dijalankan:
System.exit() metodefinally blokir
Untuk setiap try blok, bisa ada nol atau lebih catch blok. Beberapa catch blok memungkinkan kita untuk menangani setiap pengecualian secara berbeda.
Tipe argumen dari setiap catch blok menunjukkan jenis pengecualian yang dapat ditangani olehnya. Misalnya,
class ListOfNumbers {
public int[] arr = new int[10];
public void writeList() {
try {
arr[10] = 11;
}
catch (NumberFormatException e1) {
System.out.println("NumberFormatException => " + e1.getMessage());
}
catch (IndexOutOfBoundsException e2) {
System.out.println("IndexOutOfBoundsException => " + e2.getMessage());
}
}
}
class Main {
public static void main(String[] args) {
ListOfNumbers list = new ListOfNumbers();
list.writeList();
}
} Keluaran
IndexOutOfBoundsException => Index 10 out of bounds for length 10
Dalam contoh ini, kami telah membuat array integer bernama arr berukuran 10 .
Karena indeks array dimulai dari 0 , elemen terakhir dari array berada di arr[9] . Perhatikan pernyataannya,
arr[10] = 11;
Di sini, kami mencoba menetapkan nilai ke indeks 10 . Oleh karena itu, IndexOutOfBoundException terjadi.
Ketika pengecualian terjadi di try blokir,
catch pertama memblokir. catch pertama blok tidak menangani IndexOutOfBoundsException , sehingga diteruskan ke catch berikutnya blokir.catch blok dalam contoh di atas adalah penangan pengecualian yang sesuai karena menangani IndexOutOfBoundsException . Oleh karena itu, dieksekusi.
Dari Java SE 7 dan yang lebih baru, sekarang kita dapat menangkap lebih dari satu jenis pengecualian dengan satu catch blokir.
Ini mengurangi duplikasi kode dan meningkatkan kesederhanaan dan efisiensi kode.
Setiap jenis pengecualian yang dapat ditangani oleh catch blok dipisahkan menggunakan bilah vertikal | .
Sintaksnya adalah:
try {
// code
} catch (ExceptionType1 | Exceptiontype2 ex) {
// catch block
} Untuk mempelajari lebih lanjut, kunjungi Java yang menangkap beberapa pengecualian.
coba-dengan-sumber daya pernyataan adalah pernyataan percobaan yang memiliki satu atau lebih deklarasi sumber daya.
Sintaksnya adalah:
try (resource declaration) {
// use of the resource
} catch (ExceptionType e1) {
// catch block
} Resource adalah objek yang akan ditutup pada akhir program. Itu harus dideklarasikan dan diinisialisasi dalam pernyataan try.
Mari kita ambil contoh.
try (PrintWriter out = new PrintWriter(new FileWriter("OutputFile.txt")) {
// use of the resource
} coba-dengan-sumber daya pernyataan juga disebut sebagai manajemen sumber daya otomatis . Pernyataan ini secara otomatis menutup semua sumber daya di akhir pernyataan.
Untuk mempelajari lebih lanjut, kunjungi pernyataan java try-with-resources.
java
Antarmuka Koleksi Java Dalam tutorial ini, kita akan belajar tentang antarmuka Java Collection dan subinterface-nya. Collection antarmuka adalah antarmuka akar kerangka koleksi Java. Tidak ada implementasi langsung dari antarmuka ini. Namun, ini diimplementasikan melalui subinterfacenya seperti L
Daftar Java Dalam tutorial ini, kita akan belajar tentang antarmuka Daftar di Java dan metodenya. Dalam Java, List interface adalah kumpulan terurut yang memungkinkan kita untuk menyimpan dan mengakses elemen secara berurutan. Ini memperluas Collection antarmuka. Kelas yang Menerapkan Daftar Seja
Antarmuka Antrian Java Dalam tutorial ini, kita akan belajar tentang antarmuka Java Queue dan metodenya. Queue antarmuka kerangka koleksi Java menyediakan fungsionalitas struktur data antrian. Ini memperluas Collection antarmuka. Kelas yang Menerapkan Antrian Sejak Queue adalah antarmuka, kami t
Apa itu Pengecualian di Java? Pengecualian di Jawa adalah peristiwa yang mengganggu eksekusi instruksi program dan mengganggu aliran normal eksekusi program. Ini adalah objek yang membungkus informasi peristiwa kesalahan yang terjadi dalam suatu metode dan diteruskan ke sistem runtime. Di Java, pen