Dalam tutorial, kita akan belajar tentang berbagai pendekatan penanganan pengecualian di Java dengan bantuan contoh.
Di tutorial terakhir, kita belajar tentang pengecualian Java. Kami tahu bahwa pengecualian secara tidak normal menghentikan eksekusi program.
Inilah mengapa penting untuk menangani pengecualian. Berikut daftar pendekatan berbeda untuk menangani pengecualian di Java.
- coba … tangkap blok
- akhirnya memblokir
- melempar dan melempar kata kunci
1. Java coba … blok tangkap
Blok try-catch digunakan untuk menangani pengecualian di Java. Berikut sintaks try… catch
blok:
try ( // code ) catch(Exception e) ( // code )
Di sini, kami telah menempatkan kode yang mungkin menghasilkan pengecualian di dalam try
blok. Setiap try
blok diikuti oleh satu catch
blok.
Ketika pengecualian terjadi, itu ditangkap oleh catch
blok. The catch
blok tidak dapat digunakan tanpa try
blok.
Contoh: Penanganan pengecualian menggunakan try… catch
class Main ( public static void main(String() args) ( try ( // code that generate exception 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
Dalam contoh, kami mencoba membagi angka dengan 0
. Di sini, kode ini menghasilkan pengecualian.
Untuk menangani pengecualian, kami telah meletakkan kode, 5 / 0
di dalam try
blok. Sekarang ketika pengecualian terjadi, sisa kode di dalam try
blok akan dilewati.
The catch
blok menangkap pengecualian dan pernyataan dalam blok catch dieksekusi.
Jika tidak ada pernyataan di try
blok yang menghasilkan pengecualian, catch
blok tersebut dilewati.
2. Java akhirnya memblokir
Di Java, finally
blok selalu dijalankan tidak peduli apakah ada pengecualian atau tidak.
The finally
blok opsional. Dan, untuk setiap try
blok, hanya boleh ada satu finally
blok.
Sintaks dasar finally
blok adalah:
try ( //code ) catch (ExceptionType1 e1) ( // catch block ) finally ( // finally block always executes )
Jika pengecualian terjadi, finally
blok dijalankan setelah try… catch
blok. Jika tidak, itu dijalankan setelah blok percobaan. Untuk setiap try
blok, hanya boleh ada satu finally
blok.
Contoh: Penanganan Pengecualian Java menggunakan blok terakhir
class Main ( public static void main(String() args) ( try ( // code that generates exception int divideByZero = 5 / 0; ) catch (ArithmeticException e) ( System.out.println("ArithmeticException => " + e.getMessage()); ) finally ( System.out.println("This is the finally block"); ) ) )
Keluaran
ArithmeticException => / dengan nol Ini adalah blok terakhir
Dalam contoh di atas, kami membagi angka dengan 0 di dalam try
blok. Di sini, kode ini menghasilkan ArithmeticException
.
Pengecualian ditangkap oleh catch
blok. Dan, kemudian finally
pemblokiran dijalankan.
Catatan : Ini adalah praktik yang baik untuk menggunakan finally
blok. Itu karena dapat menyertakan kode pembersihan penting seperti,
- kode yang mungkin tidak sengaja dilewati oleh pengembalian, lanjutkan, atau putus
- menutup file atau koneksi
3. Kata kunci melempar dan melempar Jawa
Kata throw
kunci Java digunakan untuk secara eksplisit menampilkan satu pengecualian.
Ketika kami throw
pengecualian, aliran program bergerak dari satu try
blok ke catch
blok lainnya.
Contoh: Penanganan pengecualian menggunakan lemparan Java
class Main ( public static void divideByZero() ( // throw an exception throw new ArithmeticException("Trying to divide by 0"); ) public static void main(String() args) ( divideByZero(); ) )
Keluaran
Pengecualian di utas "main" java.lang.ArithmeticException: Mencoba membagi dengan 0 di Main.divideByZero (Main.java:5) di Main.main (Main.java:9)
Dalam contoh di atas, kami secara eksplisit ArithmeticException
menggunakan throw
kata kunci.
Demikian pula, throws
kata kunci digunakan untuk mendeklarasikan jenis pengecualian yang mungkin terjadi di dalam metode. Ini digunakan dalam deklarasi metode.
Contoh: Java melempar kata kunci
import java.io.*; class Main ( // declareing the type of exception public static void findFile() throws IOException ( // code that may generate IOException File newFile = new File("test.txt"); FileInputStream stream = new FileInputStream(newFile); ) public static void main(String() args) ( try ( findFile(); ) catch (IOException e) ( System.out.println(e); ) ) )
Keluaran
java.io.FileNotFoundException: test.txt (Sistem tidak dapat menemukan file yang ditentukan)
Saat kita menjalankan program ini, jika file test.txt tidak ada, FileInputStream
melempar a FileNotFoundException
yang memperluas IOException
kelas.
The findFile()
metode menentukan bahwa IOException
dapat dibuang. The main()
pemanggilan metode metode ini dan menangani pengecualian jika dibuang.
Jika metode tidak menangani pengecualian, jenis pengecualian yang mungkin terjadi di dalamnya harus ditentukan dalam throws
klausul.
Untuk mempelajari lebih lanjut, kunjungi lempar dan lempar Java.