Soovitatav, 2024

Toimetaja Valik

Erinevus viskamise ja viskamise vahel Java-s

Viska ja viskamised on märksõnad, mida kasutatakse erandite käitlemisel. Viska märksõna kasutatakse programmija poolt loodud erandi eksemplari üleandmiseks käsitsi JVM-ile. Meetodis kasutatud erandite käsitlemise kohustuse üleandmiseks kasutatav viskamise märksõna oli helistaja meetod. Põhiline erinevus viskamise ja viskamise vahel on see, et visata märksõna kasutab erandobjekti, samas kui viskamise märksõna kasutab erandiklasside nime.

Võrdluskaart

Võrdluse alusvisataviskab
PõhilineMärksõna võtmesõna edastab meie loodud erandi objekti JVM-ile käsitsi.Märksõna märksõna kasutatakse selleks, et delegeerida erandite käitlemise vastutus meetodi helistajale.
Süntaksiviska visatud eksemplar;return_type method_name (parameetrite nimekiri) viskab ExceptionClass_list
{
// meetodi keha
}
JärgnebViska märksõna järgneb erandobjekt.Märksõna märksõnale järgneb loetelu erandite klassidest, mis võivad meetodis esineda.
Välja antud erandite arvMärksõna märksõna võib visata ühe erandjuhtumi.Märksõnad võivad deklareerida mitu erandiklassi, mis on eraldatud komaga.

Viska mõiste

Märksõna „ visata ” kasutatakse meie loodud erandite näiteks JVM (Java Virtual Machine) käsitsi edastamiseks. Kui „visata” ei kasutata erandite eksemplari viskamiseks ja erand tekib, siis käivitab käitussüsteem sisemiselt erandjuhtumi JVM-ile ja programm lõpetab ebanormaalselt. Viska märksõna üldine vorm on:

 viska Throwable_instance; 

Throwable_instance'i kõrval peab olema klassi Throwable objekt. Primitiivseid tüüpe, nagu näiteks int, float või char ja mitte-visata klassi, ei saa visata märksõna abil.

Võtame näiteks, et mõistame märksõna viska.

 Class Test {Public static void main (String [] args) {viska uus ArithmeticException ("/ nulliga"); }} 

Ülaltoodud koodis viskab märksõna visand välja „Eraklass“ „ArithmeticException”. Kui visata märksõna ei oleks kasutatud, oleks peamine () meetod sisemiselt loonud JVM-ile üleantud erandobjekti.

Märksõnad:

  • See edastab erandobjekti käsitsi JVM-ile.
  • Seda kasutatakse kõige paremini kasutaja määratud erandite või kohandatud erandite jaoks.
  • Kui mälu ei ole eraldatud visata märksõna poolt visatud erandobjektile, siis ilmneb käitusaja erand, NullPointerException.
  • Viska märksõna peatab programmi täitmise kohe pärast selle esinemist. me ei saa kohe pärast viskamisavaldust kirjutada ühtegi avaldust. Kui me kirjutame mis tahes staatuse vahetult pärast viskamisavaldust, näitab kompilaator vea, kättesaamatut avaldust koostamise ajal.
  • Ainult visata klassi objekte saab visata märksõna abil. Kui visatud objekt ei ole klassi Throwable objekt, siis saadakse kompileerimisaja viga “Leitud kokkusobimatu tüüp. . nõutav java.lang.Throwable ”

Märge:

Märksõna märksõna kasutatakse C ++, JAVA, C #, et erandit käsitsi visata.

Metsa määratlused

Märksõna „ viskamine ” kasutatakse selleks, et delegeerida meetodis esineva erandi käsitlemise vastutus oma helistaja meetodile. Helistaja meetod vastutab erandi käitlemise eest, mis võib olla mis tahes muu meetod või JVM. See deklareerib meetodi puhul esinevate erandiklasside nimekirja.

Viska võtmesõna kasutamine veenab kompilaatorit, et meetodis esinevat erandit tuleb käsitleda helistaja meetodiga, seega ei esine kompileerimisviga. Kuid helistaja meetod peab käsitlema erandit või delegeerima vastutuse selle hierarhia meetodi erandite käsitlemiseks. Kui käivitub käitusaegne erand, siis ei takista see isegi pärast viskamise märksõna kasutamist programmi ebanormaalset lõpetamist. Kui helistaja meetod on peamine (), tegeleb vaikimisi JVM erandiga.

Viska märksõna üldine vorm on:

 return_type meetod_nimi (parameetrite nimekiri) viskab erandklass_list {// keha meetod} 

Me näeme, et viskamise märksõna ilmub pärast meetodi allkirjastamist ja see võib sisaldada meetodi puhul esinevaid erandiklasside loendit. Pärast märksõnade viskamist kirjutatud erandite klassid eraldatakse komaga.

Võtame ühe näite viskamise märksõna mõistmiseks.

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

Ülaltoodud koodis tehakse peavood magama () meetodi abil mõneks ajaks magama. Nüüd, kui põhimeetod on unerežiimis, on võimalik, et teised niidid võivad peakeermest katkestada. Kuid viskamise märksõna kasutatakse pärast peamise () meetodi allkirjastamist, nii et programm koostaks kergesti. Märksõna märksõna ütleb, et kontrollitud erandiklass on katkestatud. Nüüd, kui mõni muu lõime katkestab käitusaja jooksul peateema, siis viskab märksõna välja selle erandi peamise () meetodi helistajale, mis on JVM. JVM lõpetaks programmi ebanormaalselt.

Punktid, mida meelespea märksõna kohta meeles pidada:

  • Viska märksõna kasutatakse ainult kontrollitud erandiklasside deklareerimiseks. Kontrollimatu erandi jaoks viskamise märksõna kasutamine ei mõjuta.
  • Kui meetod ei soovi erandit eraldi käsitleda, delegeerib see erand selle klassi helistaja meetodile, kasutades viskamise märksõna.
  • Selle kasutamine võimaldab ainult programmi sujuvat koostamist.
  • Kui runtime ajal ilmneb erand, lõpeb programm ebanormaalselt isegi pärast viskamise märksõna kasutamist.
  • Juhul, kui runtime ajal erandit, on soovitatav programmi tavaliseks lõpetamiseks kasutada katse- / püügiplokki.

Märge:

Märksõna viskab ainult Java. C ++ ja C # ei kasuta viskamise märksõna.

Peamised erinevused viskamise ja viskamise vahel

  1. Märksõna viskab, edastab erandite käsitlemise vastutuse JVM-ile käsitsi, samas kui märksõna viskab üleandmise vastutuse üleandmise koodi helistaja meetodile, kus erand on toimunud.
  2. Viska märksõna järgneb erandobjekt, mille see JVM-ile üle annab. Teisest küljest järgneb märksõnade viskamise järel erandite klassidele, mis võivad meetodis esineda.
  3. Märksõna võtmesõna võib korraga välja visata ühe erandobjekti, samal ajal kui viskamise märksõna võib deklareerida korraga mitu komaga eraldatud erandite klassi.

Järeldus:

Viska märksõna on kõige paremini kohandatud erandi jaoks. Proov / blokeerimisblokk on kõige parem erandite käsitlemiseks võrreldes viskamise märksõnaga.

Top