Viskamise ja viske erinevus Java-s

Autor: Laura McKinney
Loomise Kuupäev: 1 Aprill 2021
Värskenduse Kuupäev: 15 Mai 2024
Anonim
Top 10 Worst Foods For Diabetics
Videot: Top 10 Worst Foods For Diabetics

Sisu


Viskamine ja viskamine on märksõnad, mida erandite käsitlemisel kasutatakse. viska märksõna kasutatakse programmeerija loodud erandi esinemisjuhu JVM-le käsitsi üleandmiseks. viskab märksõna, mida kasutatakse erandi käsitlemise vastutuse üleandmiseks, ilmnes meetodis helistaja meetodile. Peamine erinevus viske ja viske vahel on see, et viske märksõna kasutab erandobjekti, samas kui viskamise märksõna kasutab erandklasside nime.

  1. Võrdlusdiagramm
  2. Definitsioon
  3. Peamised erinevused
  4. Järeldus

Võrdlusdiagramm

Võrdluse alusviskaviskab
PõhilineVisatud märksõna üleandmine meie loodud erandobjektile JVM-i käsitsi.Viskamise märksõna kasutatakse erandite käsitlemise vastutuse delegeerimiseks meetodi helistajale.
Süntaksviska viskavat instantsi;return_type method_name (parameetrite loend) viskab ExceptionClass_list
{
// meetodi põhiosa
}
JärgnebViskamise märksõnale järgneb erandobjekt.Viskamise märksõnale järgneb meetodis esineda võivate erandiklasside loend.
Välja jäetud erandite arvViskamise märksõna võib visata ühe erandjuhu.Viskav märksõna võib kuulutada mitu komaga eraldatud erandiklassi.


Viske määratlus

Märksõna „viska”Kasutatakse meie loodud erandite eksemplari käsitsi üleandmiseks JVM-ile (Java virtuaalsele masinale). Kui “viska” ei kasutata erandite esinemise viskamiseks ja erand toimub, siis viskab käitusesüsteem sisemiselt erandi esinemisjuhu JVM-i ja programm lõpeb ebaharilikult. Viskamise märksõna üldvorm on:

viska viskama_instants;

Throvable_instance kohal peab olema klassi Throvable objekt. Primitiivseid tüüpe, nagu int, float või char ja mitte-viskavat klassi esinemisjuhtu, ei saa visata märksõna abil.

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

Klassi test {Avalik staatiline tühine pea (keelpillid) {viska uus ArithmeticException ("/ null"); }}

Ülaltoodud koodi korral viskab märksõna viska erandklassi “ArithmeticException” eksemplari. Kui viske märksõna poleks siis kasutatud, oleks peamine () meetod sisemiselt loonud JVM-ile üle antud erandobjekti.


Märksõnad, mida tuleb märksõna viskamise juures meeles pidada:

  • See annab erandiobjekti käsitsi üle JVM-i.
  • Seda saab kõige paremini kasutada kasutaja määratletud erandite või kohandatud erandite jaoks.
  • Kui mälu ei eraldata viskamise märksõnaga visatavale erandobjektile, siis ilmneb käitusaegne erand NullPointerException.
  • Viskamise märksõna peatab programmi täitmise kohe pärast selle ilmumist. me ei saa otse pärast viske avaldust kirjutada. Kui kirjutame suvalise lause vahetult pärast viskamisavaldust, kuvatakse kompilaatori koostamisel viga, kättesaamatu avaldus.
  • Ainult viskamisklassi esemeid saab visata märksõna abil. Kui visatud objekt ei ole klassi Throvable objekt, siis saame kompileerimise aja vea “Leitud sobimatu tüüp. . nõutav java.lang.Tõmmatav ”

Märge:

Viske märksõna kasutatakse C ++, JAVA, C # erandi käsitsi viskamiseks.

Viske määratlus

viskab”Märksõna kasutatakse meetodi puhul tehtud erandi käsitlemise vastutuse delegeerimiseks selle helistaja meetodile. Erandi käsitlemise eest vastutab helistaja meetod, selleks võib olla mõni muu meetod või JVM. See deklareerib erandiklasside loetelu, mis võivad meetodis esineda.

Viskamise märksõna kasutamine veenab kompilaatorit, et meetodis tehtud erand tuleb käsitleda helistaja meetodil, seega kompileerimisviga ei teki. Kuid helistaja meetod peab erandit käsitlema või delegeerima erandi käsitlemise vastutuse oma hierarhia meetodile. Kui käitusaeg on erand, ei takista see isegi pärast märksõna viskamist programmi ebanormaalset lõpetamist. Kui helistaja meetod on peamine (), tegeleb erandiga JVM.

Viskamise märksõna üldvorm on:

return_type meetod_nimi (parameetrite loend) viskab erandiClass_list {// meetodi põhiosa}

Näeme, et viskamine ilmub pärast meetodi allkirjastamist ja see võib sisaldada meetodis esineda võivate erandiklasside loendit. Pärast märksõna viset kirjutatud erandklasside loetelu eraldatakse komaga.

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

calss Test {avalik staatiline tühine pea (keelpillid) viskab InterruptedException {niit uni (10000); }}

Ülaltoodud koodis pannakse peamine niit unerežiimi () meetodi abil mõnda aega magama. Nüüd, kui põhimeetod on unerežiimis, on võimalik, et teised niidid võivad peamise niidi katkestada. Kuid viskamise märksõna kasutatakse pärast meetodi main () allkirjastamist, nii et programm kompileeriks hõlpsalt. Viskav märksõna kuulutab kontrollitud erandiklassi InterruptedException. Nüüd, kui mõni teine ​​lõim katkestab põhilõnga käitusperioodi ajal, loovutab märksõna visand selle erandi peamise () meetodi helistajale, milleks on JVM. JVM lõpetaks programmi ebaharilikult.

Punktid, mida meeles pidada viskamise märksõna puhul:

  • Viskamise märksõna kasutatakse ainult kontrollitud erandiklasside deklareerimiseks. Viskamise märksõna kasutamine kontrollimata erandil ei mõjuta.
  • Kui meetod ei soovi erandit iseseisvalt käsitleda, delegeerib see erand selle klassi helistaja meetodile, kasutades viskeid.
  • Selle kasutamine võimaldab ainult programmi sujuvat koostamist.
  • Kui käituse ajal ilmneb erand, lõpeb programm ebaharilikult isegi pärast viskamise märksõna kasutamist.
  • Programmi tavapäraseks lõpetamiseks on soovitatav kasutada proovimis- / püüdmisplokki, kui käitusel ilmneb erand.

Märge:

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

  1. Märksõna viskamine, erandi käitlemise vastutuse üleandmine JVM-ile käsitsi, samas kui märksõna viskab erandi käsitlemise vastutuse üleandmine koodi helistaja meetodile, kus on erand tehtud.
  2. Viskamise märksõnale järgneb erandobjekt, mille see annab üle JVM-ile. Teisest küljest järgneb viskavale märksõnale erandklassid, mis võivad meetodis esineda.
  3. Viske märksõna võib visata korraga ühe erandobjekti, samas kui viskav märksõna võib deklareerida mitu komaga eraldatud erandiklassi korraga.

Järeldus:

Viskamise märksõna kasutatakse kõige paremini kohandatud erandi jaoks. Erandite haldamiseks on märksõnaga võrreldes kõige parem proovida / püüda blokeerida.