Direkomendasikan, 2024

Pilihan Editor

Perbedaan antara lemparan dan lemparan di Jawa

Lempar dan lempar adalah kata kunci yang digunakan dalam penanganan pengecualian. Kata kunci throw digunakan untuk menyerahkan instance pengecualian yang dibuat oleh programmer ke JVM secara manual. Kata kunci lempar yang digunakan untuk menyerahkan tanggung jawab penanganan pengecualian terjadi pada metode ke metode pemanggil. Perbedaan mendasar antara lemparan dan lemparan adalah bahwa kata kunci melempar menggunakan objek pengecualian sedangkan kata kunci melempar menggunakan nama kelas pengecualian.

Grafik perbandingan

Dasar Perbandinganmelemparkanmelempar
DasarKata kunci lempar serah terima objek pengecualian yang kami buat ke JVM secara manual.Kata kunci throws digunakan untuk mendelegasikan tanggung jawab penanganan pengecualian kepada pemanggil metode.
Sintaksismelempar Throwable-instance;return_type method_name (daftar parameter) melempar ExceptionClass_list
{
// kumpulan metode
}
Diikuti olehKata kunci throw diikuti oleh objek pengecualian.Kata kunci throws diikuti oleh daftar kelas pengecualian yang dapat terjadi dalam metode.
Jumlah Pengecualian dilemparkanKata kunci throw dapat melempar satu pengecualian tunggal.Kata kunci throws dapat mendeklarasikan beberapa kelas pengecualian yang dipisahkan oleh koma.

Definisi lemparan

Kata kunci “ throw ” digunakan untuk menyerahkan instance pengecualian yang kami buat ke JVM (Java Virtual Machine) secara manual. Jika "melempar" tidak digunakan untuk melempar instance pengecualian dan pengecualian terjadi, maka sistem runtime secara internal melempar instance exception ke JVM dan program berakhir secara tidak normal. Bentuk umum dari kata kunci throw adalah:

 lempar Throwable_instance; 

Di atas Throwable_instance harus menjadi objek dari kelas Throwable. Tipe primitif seperti int, float, atau char dan instance kelas yang tidak dapat dilempar tidak dapat dibuang menggunakan kata kunci throw.

Mari kita ambil contoh untuk memahami lemparan kata kunci.

 Uji Kelas {public static void main (String [] args) {throw new ArithmeticException ("/ by zero"); }} 

Dalam kode di atas, lemparan kata kunci melempar instance dari kelas Exception "ArithmeticException". Jika kata kunci throw belum digunakan, metode main () akan secara internal membuat objek pengecualian yang diserahkan ke JVM.

Poin yang perlu diingat tentang lemparan kata kunci:

  • Ini menyerahkan objek pengecualian secara manual ke JVM.
  • Ini paling baik digunakan untuk pengecualian yang ditentukan pengguna atau pengecualian khusus.
  • Jika memori tidak dialokasikan ke objek pengecualian yang dilemparkan oleh kata kunci, maka akan terjadi pengecualian runtime, NullPointerException.
  • Kata kunci throw menghentikan eksekusi program segera setelah kemunculannya. kita tidak bisa langsung menulis pernyataan apa pun setelah pernyataan melempar. Jika kita menulis staement langsung setelah melempar pernyataan maka kompiler akan menunjukkan kesalahan, pernyataan tidak dapat dicapai selama kompilasi.
  • Hanya objek kelas Throwable yang dapat dibuang menggunakan kata kunci throw. Jika objek yang dilempar bukan objek dari kelas Throwable maka kita mendapatkan kesalahan waktu kompilasi “Tipe tidak kompatibel yang ditemukan. . diperlukan java.lang.Terima kasih ”

catatan:

Kata kunci throw digunakan dalam C ++, JAVA, C #, untuk secara manual melempar pengecualian.

Definisi lemparan

Kata kunci “ throws ” digunakan untuk mendelegasikan tanggung jawab menangani pengecualian yang terjadi pada metode, ke metode pemanggilnya. Metode penelepon bertanggung jawab untuk menangani pengecualian itu mungkin metode lain atau JVM. Ini menyatakan daftar kelas pengecualian yang mungkin terjadi dalam metode ini.

Penggunaan kata kunci throws meyakinkan kompiler bahwa pengecualian yang terjadi pada metode harus ditangani oleh metode pemanggil, karenanya, tidak ada kesalahan kompilasi yang terjadi. Namun, metode penelepon harus menangani pengecualian atau mendelegasikan tanggung jawab untuk menangani pengecualian terhadap metode hierarki. Ketika pengecualian runtime terjadi, maka bahkan setelah penggunaan kata kunci melempar, itu tidak mencegah penghentian program yang tidak normal. Jika metode pemanggil utama (), JVM secara default menangani pengecualian.

Bentuk umum dari kata kunci lemparan adalah:

 return_type method_name (daftar parameter) melempar exceptionClass_list {// body of method} 

Kita dapat melihat bahwa melempar kata kunci muncul setelah tanda tangan metode, dan dapat berisi daftar kelas pengecualian yang mungkin terjadi dalam metode. Daftar kelas pengecualian yang ditulis setelah pelemparan kata kunci dipisahkan oleh koma.

Mari kita ambil satu contoh untuk memahami kata kunci lemparan.

 calss Test {public static void main (String [] args) melempar InterruptedException {thread sleep (10000); }} 

Dalam kode di atas, utas utama dibuat untuk tidur selama beberapa waktu menggunakan metode sleep (). Sekarang, ketika metode utama sedang tidur, ada kemungkinan bahwa utas lainnya dapat mengganggu utas utama. Tapi, kata kunci lemparan digunakan setelah metode signature () utama, sehingga program akan dengan mudah dikompilasi. Kata kunci throws menyatakan kelas pengecualian yang diperiksa, InterruptedException. Sekarang, jika ada utas lain yang mengganggu utas utama selama runtime kata kunci throws akan menyerahkan pengecualian itu kepada pemanggil metode main (), yaitu JVM. JVM akan menghentikan program secara tidak normal.

Poin yang perlu diingat tentang melempar kata kunci:

  • Kata kunci throws hanya digunakan untuk mendeklarasikan kelas pengecualian yang diperiksa. Penggunaan kata kunci throws untuk pengecualian yang tidak dicentang tidak berdampak.
  • Jika metode tidak ingin menangani pengecualian sendiri, ia mendelegasikan pengecualian itu ke metode pemanggil kelas itu dengan menggunakan kata kunci lemparan.
  • Penggunaannya hanya memungkinkan kompilasi program dengan lancar.
  • Jika pengecualian terjadi saat runtime, program berakhir secara tidak normal, bahkan setelah penggunaan kata kunci melempar.
  • Disarankan untuk menggunakan blok coba / tangkap untuk penghentian normal program jika pengecualian terjadi pada saat runtime.

catatan:

Lemparan kata kunci hanya digunakan di Jawa. C ++ dan C # tidak menggunakan kata kunci throws.

Perbedaan Kunci Antara melempar dan melempar

  1. Melemparkan kata kunci, menyerahkan tanggung jawab penanganan pengecualian ke JVM secara manual sedangkan, kata kunci melempar, menyerahkan tanggung jawab penanganan pengecualian ke metode pemanggil kode tempat pengecualian terjadi.
  2. Kata kunci throw diikuti oleh objek pengecualian yang diserahkan ke JVM. Di sisi lain, melempar kata kunci diikuti oleh kelas pengecualian yang dapat terjadi dalam metode ini.
  3. Kata kunci throw dapat melempar satu objek pengecualian sekaligus, sedangkan kata kunci throw dapat mendeklarasikan beberapa kelas pengecualian yang dipisahkan oleh koma pada suatu waktu.

Kesimpulan:

Kata kunci throw paling baik digunakan untuk pengecualian terkustomisasi. Blok coba / tangkap adalah yang terbaik untuk menangani perkecualian dibandingkan dengan membandingkan kata kunci.

Top