Java Throw: Lempar Pengecualian
Program dapat menggunakan pernyataan Throw untuk melempar pengecualian yang jelas. Bentuk pernyataan lemparan yang biasa adalah sebagai berikut:
Throwble -inInstance;
Di sini, ThrowableInstance harus menjadi objek dari jenis kelas yang dapat dilempar atau tipe subclass yang dapat dilempar. Jenis sederhana, seperti int atau char, dan kelas yang tidak dapat dilemparkan, seperti string atau objek, tidak dapat digunakan sebagai pengecualian. Ada dua cara untuk mendapatkan objek yang bisa dilempar: Gunakan parameter dalam klausa tangkapan atau membuatnya dengan operator baru.
Eksekusi program segera berhenti setelah pernyataan lemparan; Blok percobaan tertutup yang paling ketat digunakan untuk memeriksa apakah berisi pernyataan tangkapan yang cocok dengan jenis pengecualian. Jika blok yang cocok ditemukan, kontrol beralih ke pernyataan; Jika tidak ada blok tangkapan yang cocok ditemukan, penangan pengecualian default mengganggu eksekusi program dan mencetak jejak tumpukan.
Berikut ini adalah contoh program yang membuat dan melempar pengecualian.
// Demonstrasi throw.class ThrowDemo {static void demoproc () {coba {lempar nullPointerException baru ("demo"); / / rethrow The Exception}} public static void main (string args []) {try {demoproc (); Program ini memiliki dua peluang untuk menangani kesalahan yang sama. Pertama, main () mengatur hubungan pengecualian dan kemudian memanggil demoproc (). Metode demoproc () kemudian mengatur hubungan penanganan pengecualian lain dan segera melempar instance nullpointerException baru, yang ditangkap pada baris berikutnya. Pengecualian kemudian dilemparkan lagi. Inilah hasil outputnya:
Tertangkap di dalam Demoproc.Recaught: java.lang.nullpointerexception: Demo
Program ini juga menjelaskan cara membuat objek pengecualian standar di Java, memberikan perhatian khusus pada baris berikut:
Lempar NullpointerException baru ("Demo");
Di sini, baru digunakan untuk membangun instance nullpointerException. Semua pengecualian runtime bawaan Java memiliki dua konstruktor: satu tidak memiliki parameter dan satu memiliki parameter string. Ketika bentuk kedua digunakan, parameter menentukan string yang menggambarkan pengecualian. Jika objek digunakan sebagai parameter untuk mencetak () atau println (), string ditampilkan. Ini juga dapat dicapai dengan menelepon getMessage (), yang didefinisikan oleh Throwable.
Java melempar klausa <br /> Jika suatu metode dapat menyebabkan pengecualian tetapi tidak menanganinya, itu harus menentukan perilaku ini sehingga penelepon metode dapat melindungi diri mereka sendiri tanpa pengecualian. Untuk melakukan ini, Anda dapat memasukkan klausa lemparan dalam deklarasi metode. Klausa melempar mencantumkan semua jenis pengecualian yang mungkin dilemparkan metode. Ini diperlukan untuk semua pengecualian tipe kecuali kesalahan atau runimeException dan subclass mereka. Semua jenis pengecualian lain yang dapat dilemparkan metode harus dinyatakan dalam klausa lemparan. Kegagalan untuk melakukannya akan menghasilkan kesalahan kompilasi.
Berikut adalah bentuk umum dari deklarasi metode yang berisi klausul lemparan:
type metode-name (parameter-daftar) melempar daftar pengecualian {// body of Method}Di sini, daftar pengecualian adalah daftar pengecualian koma yang dapat dilemparkan metode.
Berikut adalah contoh yang salah. Contoh ini mencoba untuk melempar pengecualian yang tidak dapat ditangkap. Karena program tidak menentukan klausul lemparan untuk menyatakan fakta, program tidak akan dikompilasi.
// Program ini berisi kesalahan dan tidak akan mengkompilasi. Klass Throwsdemo {static void throwone () {System.out.println ("Inside Throwone."); String args []) {throwone (); Untuk mengkompilasi program, dua tempat perlu diubah. Pertama, Anda perlu menyatakan Throwone () untuk meningkatkan pengecualian ilegal, Kedua, main () harus mendefinisikan pernyataan mencoba/menangkap untuk menangkap pengecualian. Contoh yang benar adalah sebagai berikut:
// Ini benar. Class Throwsdemo {static void throwone () melempar ilegalAccessException {System.out.println ("Inside Throwone."); ) {coba {throwone (); Berikut adalah hasil output dari contoh:
Inside ThrowoneCaught Java.lang.illegalAccessException: Demo