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