Subkelas Pengecualian bawaan
Dalam paket standar java.lang, Java mendefinisikan beberapa kelas pengecualian. Beberapa di antaranya digunakan dalam contoh sebelumnya. Pengecualian ini umumnya subkelas dari kelas standar runtimeException. Karena java.lang sebenarnya diperkenalkan oleh semua program Java, sebagian besar pengecualian yang berasal dari runimeException tersedia secara otomatis. Juga, mereka tidak perlu dimasukkan dalam daftar lemparan metode apa pun. Di Java, ini disebut pengecualian yang tidak terkendali. Karena kompiler tidak memeriksanya untuk melihat apakah suatu metode menangani atau melempar pengecualian ini. Pengecualian yang tidak dicentang yang didefinisikan dalam java.lang tercantum pada Tabel 1. Tabel 2 mencantumkan pengecualian yang harus dimasukkan dalam daftar lemparan metode yang ditentukan oleh java.lang, jika metode ini dapat menghasilkan salah satu pengecualian tetapi tidak dapat menanganinya sendiri. Ini disebut pengecualian yang diperiksa. Java mendefinisikan beberapa jenis pengecualian lain yang terkait dengan kelas perpustakaan yang berbeda.
Tabel 1: Subkelas pengecualian yang tidak dicentang didefinisikan dalam java.lang di java
Tabel 2: Periksa pengecualian yang ditentukan dalam java.lang
Buat Subkelas Pengecualian Anda Sendiri Menggunakan Java
Meskipun pengecualian bawaan Java menangani kesalahan paling umum, Anda mungkin ingin membangun jenis pengecualian sendiri untuk menangani kasus-kasus khusus yang Anda terapkan. Ini sangat sederhana: Tentukan saja subclass dari pengecualian (pengecualian tentu saja merupakan subkelas yang dapat dilemparkan). Subkelas Anda tidak perlu benar -benar melakukan apa pun - kehadiran mereka dalam sistem tipe memungkinkan Anda untuk menggunakannya sebagai pengecualian.
Kelas pengecualian itu sendiri tidak mendefinisikan metode apa pun. Tentu saja, itu mewarisi beberapa metode yang disediakan oleh Throwable. Oleh karena itu, semua pengecualian, termasuk yang Anda buat, bisa mendapatkan metode yang dapat dibuang. Metode ini ditunjukkan pada Tabel 3. Anda juga dapat mengganti satu atau lebih metode ini di kelas pengecualian yang Anda buat.
Tabel 3 Metode yang ditentukan oleh Throwable
Contoh berikut menyatakan subkelas baru pengecualian, yang kemudian digunakan sebagai sinyal untuk kesalahan dalam metode ini. Ini membebani metode tostring (), sehingga deskripsi pengecualian dapat ditampilkan dengan println ().
// Program ini membuat pengecualian khusus. Class MyException memperluas Exception {private int detail; } class exceptionDemo {static void compute (int a) melempar myException {System.out.println ("Called compute (" + a + ")"); .println (EXIT NORMAL "); e);}}}
Contoh ini mendefinisikan subclass dari Exception MyException. Subkelas ini sangat sederhana: hanya berisi konstruktor dan metode tostring () yang kelebihan beban yang menampilkan outlier. Kelas ExceptionDemo mendefinisikan metode komputasi (). Metode ini melempar objek MyException. Pengecualian ini dinaikkan ketika parameter integer komputasi () lebih besar dari 10.
Metode utama () mengatur penangan pengecualian untuk MyException, dan kemudian memanggil komputasi () dengan nilai hukum dan nilai ilegal untuk menampilkan jalur eksekusi yang berbeda melalui kode. Inilah hasilnya:
Disebut komputasi (1) Komputasi keluar normal (20) menangkap MyException [20]