Dalam tutorial ini, kita akan belajar tentang pernyataan try catch di Java dengan bantuan contoh.
The try… catchblok di Jawa digunakan untuk menangani pengecualian dan mencegah penghentian abnormal program.
Berikut sintaks try… catchblok di Java.
try( // code ) catch(exception) ( // code )
The tryblok termasuk kode yang mungkin menghasilkan pengecualian.
The catchblok termasuk kode yang dieksekusi ketika ada terjadi pengecualian dalam tryblok.
Contoh: Java try… catch block
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 => / dengan nol
Pada contoh di atas, perhatikan barisnya,
int divideByZero = 5 / 0;
Di sini, kami mencoba membagi angka dengan nol . Dalam kasus ini, terjadi pengecualian. Karenanya, kami telah memasukkan kode ini di dalam tryblok.
Ketika program menemukan kode ini, ArithmeticExceptionterjadi. Dan, pengecualian ditangkap oleh catchblok dan mengeksekusi kode di dalam catchblok.
The catchblok hanya dijalankan jika ada pengecualian dalam tryblok.
Catatan : Di Java, kita bisa menggunakan tryblok tanpa catchblok. Namun, kami tidak dapat menggunakan catchblok tanpa tryblokir.
Java coba … akhirnya blokir
Kita juga bisa menggunakan tryblok bersama dengan blok terakhir.
Dalam kasus ini, blok terakhir selalu dieksekusi apakah ada pengecualian di dalam blok percobaan atau tidak.
Contoh: Java coba… akhirnya blokir
class Main ( public static void main(String() args) ( try ( int divideByZero = 5 / 0; ) finally ( System.out.println("Finally block is always executed"); ) ) )
Keluaran
Akhirnya blok selalu dijalankan Pengecualian di utas "main" java.lang.ArithmeticException: / oleh nol di Main.main (Main.java:4)
Dalam contoh di atas, kami telah menggunakan tryblok bersama dengan finallyblok. Kita dapat melihat bahwa kode di dalam tryblok menyebabkan pengecualian.
Namun, kode di dalam finallyblok tersebut dijalankan terlepas dari pengecualiannya.
Java coba … tangkap … akhirnya blokir
Di Java, kita juga bisa menggunakan blok terakhir setelah try… catchblok. Sebagai contoh,
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
Memasukkan pernyataan percobaan Exception => Indeks 5 di luar batas untuk panjang 5 Closing PrintWriter
Dalam contoh di atas, kami telah membuat daftar bernama array dan file bernama output.txt. Di sini, kami mencoba membaca data dari array dan menyimpan ke file.
Perhatikan kodenya,
for (int i = 0; i < 7; i++) ( out.println("Value at: " + i + " = " + list(i)); )
Di sini, ukuran larik adalah 5dan elemen terakhir larik ada di list(4). Namun, kami mencoba mengakses elemen di a(5) dan a(6).
Karenanya, kode menghasilkan pengecualian yang ditangkap oleh blok catch.
Karena finallyblok selalu dieksekusi, kami telah memasukkan kode untuk menutup bagian PrintWriterdalam blok akhirnya.
Merupakan praktik yang baik untuk menggunakan last block untuk menyertakan kode pembersihan penting seperti menutup file atau koneksi.
Catatan : Ada beberapa kasus ketika finallyblok tidak dieksekusi:
- Penggunaan
System.exit()metode - Pengecualian terjadi di
finallyblok tersebut - Kematian seutas benang
Beberapa blok Tangkap
Untuk setiap tryblok, boleh ada nol atau lebih catchblok. Banyak catchblok memungkinkan kita menangani setiap pengecualian secara berbeda.
Tipe argumen dari setiap catchblok menunjukkan tipe pengecualian yang dapat ditangani olehnya. Sebagai contoh,
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 => Indeks 10 di luar batas untuk panjang 10
Dalam contoh ini, kami telah membuat array integer bernama arrukuran 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, IndexOutOfBoundExceptionterjadilah.
Ketika pengecualian terjadi di tryblok,
- Pengecualian dilemparkan ke
catchblok pertama .catchBlok pertama tidak menanganiIndexOutOfBoundsException, sehingga diteruskan kecatchblok berikutnya . catchBlok kedua dalam contoh di atas adalah pengendali pengecualian yang sesuai karena menangani fileIndexOutOfBoundsException. Oleh karena itu, itu dieksekusi.
Menangkap Beberapa Pengecualian
Dari Java SE 7 dan yang lebih baru, kami sekarang dapat menangkap lebih dari satu jenis pengecualian dengan satu catchblok.
Ini mengurangi duplikasi kode dan meningkatkan kesederhanaan dan efisiensi kode.
Setiap jenis pengecualian yang dapat ditangani oleh catchblok dipisahkan menggunakan bilah vertikal |.
Sintaksnya adalah:
try ( // code ) catch (ExceptionType1 | Exceptiontype2 ex) ( // catch block )
Untuk mempelajari lebih lanjut, kunjungi Java menangkap beberapa pengecualian.
Pernyataan coba-dengan-sumber daya Java
Pernyataan try-with-resources adalah pernyataan try yang memiliki satu atau beberapa deklarasi resource.
Sintaksnya adalah:
try (resource declaration) ( // use of the resource ) catch (ExceptionType e1) ( // catch block )
Sumber daya adalah objek yang akan ditutup di akhir program. Ini harus dideklarasikan dan diinisialisasi dalam pernyataan percobaan.
Mari kita ambil contoh.
try (PrintWriter out = new PrintWriter(new FileWriter("OutputFile.txt")) ( // use of the resource )
Pernyataan coba-dengan-sumber daya 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.








