1. throw
operator
Ketika sebuah pengecualian ditangkap oleh sebuah catch
blok, dan sampai ia dilemparkan ke mesin Java, itu hanyalah sebuah objek yang mewarisi Exception
(atau lebih tepatnya, Throwable
). Objek pengecualian itu sendiri tidak memiliki sifat magis.
Semua logika tentang cara kerja pengecualian hanyalah cara khusus perilaku mesin Java saat pengecualian dilemparkan ke sana.
Anda selalu dapat mengembalikan pengecualian yang tertangkap ke mesin Java. Untuk melakukan ini, Anda perlu menggunakan throw
operator:
throw exception;
Contoh:
Kode | Keluaran konsol |
---|---|
|
|
Dalam kode ini, kami menangkap pengecualian, menampilkan pesan tentangnya di layar, lalu menampilkannya kembali.
Pengecualian yang dilemparkan kembali tidak dapat ditangkap oleh catch
blok lain di try
blok yang sama.
2. Pengecualian Anda
Ngomong-ngomong, Anda bisa membuat objek pengecualian sendiri: itu hanya objek yang bertipe Exception
atau kelas yang mewarisinya. Dan membuangnya.
Ini lebih mudah daripada kedengarannya. Contoh:
Kode | Keluaran konsol |
---|---|
|
|
Pada contoh di atas, kita membuat objek exception baru yang bertipe is RuntimeException
dan langsung membuangnya menggunakan throw
operator.
Itu akan segera ditangkap oleh catch
blok, karena RuntimeException mewarisi Exception
. Kode catch (Exception except)
menangkap objek pengecualian dari semua kelas yang mewarisi Exception
kelas.
3. finally
kata kunci
Poin penting lainnya. Terkadang seorang programmer perlu melakukan beberapa tindakan terlepas dari apakah pengecualian terjadi dalam kode. Misalnya, kita membuka file untuk menulis. File yang dibuka harus ditutup dengan memanggil close()
.
try
{
// Code where an exception might occur
}
catch(ExceptionType name)
{
// Exception handling code
}
finally
{
// Code that must executed no matter what happens
}
Untuk melakukan tindakan wajib ini, jenis blok lain ( finally
) ditambahkan ke try-catch
konstruk, sehingga membuat try-catch-finally
konstruk. Ini terlihat seperti ini:
Contoh:
FileInputStream source = null;
try
{
source = new FileInputStream("c:\\note.txt");
source.read();
}
catch(Exception except)
{
System.out.println("Caught the exception");
throw except;
}
finally
{
if (source != null)
source.close();
}
Kode di finally
blok akan dieksekusi dalam hal apa pun, terlepas dari apakah ada pengecualian. Bahkan jika pengecualian dilemparkan dan tidak tertangkap, finally
blok tersebut akan tetap dieksekusi.
By the way, jika Anda tidak ingin menangkap pengecualian, tetapi Anda membutuhkan blok finally
, gunakan notasi steno untuk try-catch-finally
konstruk: try-finally
blok. Ini terlihat seperti ini:
try
{
// Code where an exception might occur
}
finally
{
// Code that must executed no matter what happens
}
GO TO FULL VERSION