Java coba ... tangkap (Dengan Contoh)

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 menangani IndexOutOfBoundsException, sehingga diteruskan ke catchblok berikutnya .
  • catchBlok kedua dalam contoh di atas adalah pengendali pengecualian yang sesuai karena menangani file IndexOutOfBoundsException. 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.

Artikel yang menarik...