Disyorkan, 2021

Pilihan Editor

Perbezaan antara lemparan dan lontaran di Jawa

Lontaran dan lontaran adalah kata kunci yang digunakan dalam pengendalian pengecualian. Kata kunci lempar digunakan untuk menyerahkan contoh pengecualian yang dibuat oleh pengaturcara ke JVM secara manual. Kata kunci melemparkan digunakan untuk menyerahkan tanggungjawab mengendalikan pengecualian yang berlaku dalam kaedah kepada kaedah pemanggil. Perbezaan dasar antara lemparan dan lemparan adalah kata kunci lempar menggunakan objek pengecualian sedangkan kata kunci melemparkan menggunakan nama kelas pengecualian.

Carta Perbandingan

Asas Perbandinganbuangmelemparkan
AsasKata kunci lemparan menyerahkan objek pengecualian yang dibuat kepada JVM secara manual.Kata kunci melemparkan digunakan untuk mewakilkan tanggungjawab pengendalian pengecualian kepada pemanggil kaedah.
Sintaksmembuang contoh yang boleh terbakar;return_type method_name (parameter-list) melemparkan ExceptionClass_list
{
// badan kaedah
}
Diikuti olehKata kunci lontaran diikuti oleh objek pengecualian.Kata kunci lontaran diikuti dengan senarai kelas pengecualian yang boleh berlaku dalam kaedah tersebut.
Bilangan Pengecualian dibuangKata kunci lemparan boleh membuang satu contoh pengecualian.Kata kunci lemparan boleh mengisytiharkan pelbagai kelas pengecualian yang dipisahkan oleh koma.

Definisi lontaran

Kata kunci " buang " digunakan untuk menyerahkan contoh terkecuali yang dibuat kepada JVM (Mesin Maya Maya) secara manual. Jika "membuang" tidak digunakan untuk membuang contoh pengecualian dan pengecualian berlaku, maka sistem runtime secara dalaman membuang contoh pengecualian ke JVM dan program itu berakhir secara tidak normal. Bentuk umum kata kunci buang ialah:

 buang Throwable_instance; 

Di atas Throwableinstance mesti menjadi objek kelas Throwable. Jenis-jenis primitif seperti int, apungan, atau char dan contoh kelas yang tidak dapat dibuang tidak dapat dilemparkan menggunakan kata kunci lempar.

Marilah kita ambil contoh untuk memahami lemparan kata kunci.

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

Dalam kod di atas, kata kunci melemparkan satu contoh kelas Pengecualian "ArithmeticException". Sekiranya kata kunci lempar itu tidak digunakan maka kaedah utama () akan dibuat secara dalaman objek pengecualian yang diserahkan kepada JVM.

Mata untuk diingati tentang lemparan kata kunci:

  • Ia memberikan objek pengecualian secara manual kepada JVM.
  • Ia lebih baik digunakan untuk pengecualian yang ditentukan pengguna atau pengecualian yang disesuaikan.
  • Sekiranya memori tidak diperuntukkan kepada objek pengecualian yang dilemparkan dengan melemparkan kata kunci, maka terdapat pengecualian runtime, NullPointerException.
  • Kata kunci lontaran menghentikan pelaksanaan program dengan segera selepas kejadiannya. kita tidak boleh menulis sebarang kenyataan secara langsung selepas penyataan buang. Jika kita menulis stonement secara terus selepas pernyataan buang maka pengkompil akan menunjukkan ralat, penyataan yang tidak dapat dicapai semasa penyusunan.
  • Hanya objek kelas Throwable yang boleh dilemparkan dengan menggunakan kata kunci lempar. Sekiranya objek yang dilemparkan bukanlah objek kelas Throwable maka kita akan mendapat ralat masa kompilasi "Jenis yang tidak serasi dijumpai. . diperlukan java.lang.Throwable "

Catatan:

Kata kunci buang digunakan dalam C ++, JAVA, C #, untuk membuang pengecualian secara manual.

Definisi lontaran

Kata kunci " melempar " digunakan untuk mewakilkan tanggungjawab mengendalikan pengecualian yang berlaku dalam kaedah, kepada kaedah pemanggilnya. Kaedah pemanggil bertanggungjawab untuk mengendalikan pengecualian yang mungkin ada kaedah lain atau JVM. Ia mengisytiharkan senarai kelas pengecualian yang mungkin berlaku dalam kaedah tersebut.

Penggunaan kata kunci lontaran meyakinkan pengkompil bahawa pengecualian yang berlaku dalam kaedah itu akan ditangani oleh kaedah pemanggil maka tiada ralat kompilasi berlaku. Tetapi, kaedah pemanggil mesti mengendalikan pengecualian atau mewakilkan tanggungjawab untuk mengendalikan pengecualian kepada kaedah hierarkinya. Apabila pengecualian runtime berlaku, maka selepas penggunaan kata kunci melemparkan, ia tidak menghalang penamatan program yang tidak normal. Jika kaedah pemanggil utama (), secara lalai JVM mengendalikan pengecualian.

Bentuk umum kata kunci melempar adalah:

 return_type method_name (parameter-list) melemparkan pengecualianClass_list {// body of method} 

Kita dapat melihat bahawa melemparkan kata kunci muncul selepas tanda tangan kaedah, dan ia boleh mengandungi senarai kelas pengecualian yang mungkin terjadi dalam kaedah tersebut. Senarai kelas pengecualian yang ditulis selepas lemparan kata kunci dipisahkan oleh koma.

Mari kita ambil satu contoh untuk memahami kata kunci lontaran.

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

Dalam kod di atas, benang utama dijadikan tidur untuk beberapa lama menggunakan kaedah tidur (). Sekarang, apabila kaedah utama sedang tidur, kemungkinan benang lain dapat mengganggu benang utama. Tetapi, kata kunci lempar digunakan selepas tanda tangan utama () kaedah begitu, program itu akan dikompilasi dengan mudah. Kata kunci melempar mengisytiharkan kelas pengecualian InterruptedException. Sekarang, jika thread lain mengganggu benang utama semasa runtime kata kunci lempar akan menyerahkan pengecualian itu kepada pemanggil utama () metode, yang merupakan JVM. JVM akan menamatkan program secara tidak normal.

Perkara yang perlu diingati tentang melemparkan kata kunci:

  • Kata kunci lontaran hanya digunakan untuk mengisytiharkan kelas pengecualian diperiksa. Penggunaan kata kunci melemparkan untuk pengecualian yang tidak terkawal tidak memberi kesan.
  • Jika kaedah tidak mahu mengendalikan pengecualian itu sendiri, ia mewakilkan pengecualian itu kepada kaedah pemanggil kelas itu dengan menggunakan kata kunci melemparkan.
  • Penggunaannya hanya membenarkan penyusunan program yang lancar.
  • Sekiranya pengecualian berlaku pada masa runtuh, program tersebut berakhir secara tidak normal, walaupun selepas penggunaan kata kunci lontaran.
  • Adalah disyorkan untuk menggunakan blok cuba / menangkap untuk penamatan biasa program jika pengecualian berlaku pada masa runtime.

Catatan:

Kata kunci melemparkan hanya digunakan di Jawa. C ++ dan C # tidak menggunakan kata kunci lontaran.

Perbezaan Utama Antara membaling dan melemparkan

  1. Kata kunci membuang, menyerahkan tanggungjawab pengendalian pengecualian ke JVM secara manual sedangkan, kata kunci itu melemparkan, menyerahkan tanggung jawab penanganan pengecualian ke metode penelepon kode di mana pengecualian telah terjadi.
  2. Kata kunci lempar diikuti oleh objek pengecualian yang diserahkan kepada JVM. Sebaliknya, membuang kata kunci diikuti dengan kelas pengecualian yang dapat terjadi dalam metode tersebut.
  3. Kata kunci lemparan boleh membuang satu objek pengecualian pada satu ketika, kata kunci lempar dapat menyatakan beberapa kelas pengecualian yang dipisahkan oleh koma pada satu waktu.

Kesimpulan:

Kata kunci lempar digunakan untuk pengecualian yang disesuaikan. Blok cuba / menangkap adalah yang terbaik untuk mengendalikan pengecualian berbanding kata kunci yang dibuang.

Top