JAVA: Cek & Uncek Exception di Java
Exception adalah peristiwa yang tidak diinginkan atau tidak terduga, yang terjadi selama pelaksanaan program yaitu pada waktu berjalan, yang mengganggu aliran normal instruksi program. Di Java, ada dua (2) jenis exception:
- Checked exception
- Unchecked exception
Checked Exception
Ini adalah exception yang diperiksa pada waktu kompilasi. Jika beberapa code dalam suatu method melempar checked exception, maka method tersebut harus menangani exception atau harus menentukan exception menggunakan keyword throws.
Sebagai contoh, perhatikan program Java berikut yang membuka file di lokasi "C:\test\a.txt" dan mencetak tiga baris pertama. Program tidak dapat dikompilasi, karena fungsi main() menggunakan FileReader() dan FileReader() throw checked exception FileNotFoundException. Itu juga menggunakan metode readLine() dan close() , dan metode ini juga throw exception yang diperiksa IOException
Contoh:
// Java Program to Illustrate Checked Exceptions // Where FileNotFoundException occured // Importing I/O classes import java.io.*; // Main class class GFG { // Main driver method public static void main(String[] args) { // Reading file from path in local directory FileReader file = new FileReader("C:\\test\\a.txt"); // Creating object as one of ways of taking input BufferedReader fileInput = new BufferedReader(file); // Printing first 3 lines of file "C:\test\a.txt" for (int counter = 0; counter < 3; counter++) System.out.println(fileInput.readLine()); // Closing file connections // using close() method fileInput.close(); } }
Output:
Untuk memperbaiki program di atas, kita perlu menentukan list exception menggunakan throw, atau kita perlu menggunakan blok try-catch. Kami telah menggunakan throw dalam program di bawah ini. Karena FileNotFoundException adalah subclass dari IOException, kita dapat menentukan IOException di list throw dan membuat program di atas bebas dari kesalahan kompiler.
Contoh:
// Java Program to Illustrate Checked Exceptions // Where FileNotFoundException does not occur // Importing I/O classes import java.io.*; // Main class class GFG { // Main driver method public static void main(String[] args) throws IOException { // Creating a file and reading from local repository FileReader file = new FileReader("C:\\test\\a.txt"); // Reading content inside a file BufferedReader fileInput = new BufferedReader(file); // Printing first 3 lines of file "C:\test\a.txt" for (int counter = 0; counter < 3; counter++) System.out.println(fileInput.readLine()); // Closing all file connections // using close() method // Good practice to avoid any memory leakage fileInput.close(); } }
Output:
First three lines of file "C:\test\a.txt"
Unchecked Exceptions
Ini adalah exception yang tidak diperiksa pada waktu kompilasi. Di C++, semua exception tidak dipersiksa, sehingga tidak dipaksa oleh kompiler untuk menangani atau menentukan pengecualian. Terserah programmer untuk beradab, dan menentukan atau menangkap exception. Dalam Java exception di bawah Class Error dan RuntimeException adalah unchecked exception, semua yang lain di bawah throwable akan di cek.
Perhatikan program Java berikut. Ini mengkompilasi dengan baik, tetapi dia melempar ArithmeticException saat dijalankan. Kompiler mengizinkannya untuk dikompilasi karena ArithmeticException adalah unchecked exception.
Contoh:
// Java Program to Illustrate Un-checked Exceptions // Main class class GFG { // Main driver method public static void main(String args[]) { // Here we are dividing by 0 // which will not be caught at compile time // as there is no mistake but caught at runtime // because it is mathematically incorrect int x = 0; int y = 10; int z = y / x; } }
Output:
Exception in thread "main" java.lang.ArithmeticException: / by zero at Main.main(Main.java:5) Java Result: 1