Palyginimo diagrama
Palyginimo pagrindas | mesti | išmeta |
---|---|---|
Pagrindinis | Raktinio žodžio raktas perkelia mūsų sukurtą išimtį į JVM rankiniu būdu. | Metimo raktinis žodis naudojamas perduoti atsakomybės už išimties tvarkymą metodo skambinančiajam. |
Sintaksė | išmesti metimas; | return_type Method_name (parametrų sąrašas) išmeta ExceptionClass_list { // metodas } |
Po to seka | Po raktinio žodžio seka išskirtinis objektas. | Po metimo raktinių žodžių pateikiamas sąrašas išimčių klasių, kurios gali atsirasti metode. |
Išimčių skaičius | Mesti raktinį žodį gali išmesti vieną išimtį. | Raktinių žodžių raktinis žodis gali paskelbti kelias išskirtines klases, atskirtas kableliu. |
Metimo apibrėžimas
Raktinis žodis „ mesti “ naudojamas perduoti mūsų sukurtą išimties egzempliorių JVM („Java Virtual Machine“) rankiniu būdu. Jei „mesti“ nenaudojate išimties atvejis ir išimtis, tada vykdymo sistema viduje išmeta išimties atvejį į JVM ir programa nutraukiama neįprastai. Bendra metimo raktinio žodžio forma yra:
išmesti „Throwable_instance“;
Virš Throwable_instance turi būti klasė Throwable. Primityvūs tipai, pvz., Int, float arba char, ir nekritus klasės klasė negali būti išmesti naudojant raktinį žodį.
Paimkime pavyzdį, kad suprastume raktinių žodžių mesti.
Klasės testas {Public static void main (String [] args) {mesti naują ArithmeticException ("/ nulį"); }}
Anksčiau pateiktame kode raktinių žodžių metimas išmeta „Išimties“ klasės „ArithmeticException“ egzempliorių. Jei metimo raktinis žodis nebuvo naudojamas, pagrindinis () metodas būtų sukūręs vidinį išimties objektą, kuris buvo perduotas JVM.
Taškai, kuriuos reikia prisiminti dėl raktinio žodžio:
- Išimties objektas rankiniu būdu perduodamas JVM.
- Tai geriausiai tinka naudotojo nustatytoms išimtims arba pritaikytoms išimtims.
- Jei atmintis nėra priskirta išimties objektui, kurį išmeta raktinis žodis, tada įvyksta vykdymo išimtis, „NullPointerException“.
- Mesti raktinis žodis sustabdo programos vykdymą iškart po jo atsiradimo. mes negalime tiesiogiai parašyti jokių pareiškimų po metimo pareiškimo. Jei parašysime bet kokią statybą tiesiai po metimo pareiškimo, kompiliatorius parodys klaidą, nepasiekiamą pareiškimą kompiliavimo metu.
- Tik išmestos klasės objektus galima išmesti naudojant raktinį žodį. Jei išmestas objektas nėra klasė Throwable, tada gauname kompiliavimo laiko klaidą „Nesuderinamas tipas. . reikalingas java.lang.Throwable “
Pastaba:
Mesti raktinį žodį naudojamas „C ++“, „JAVA“, „C #“, kad išimtumėte rankiniu būdu.
Metimų apibrėžimas
„ Metimų “ raktinis žodis naudojamas perduoti atsakomybės už metodo išimties tvarkymą atsakomybę už jo skambinančiojo metodą. Skambintojo metodas yra atsakingas už išimties tvarkymą, kuris gali būti bet koks kitas metodas arba JVM. Jis deklaruoja išimčių klasių, kurios gali atsirasti metode, sąrašą.
Naudojant raktinių žodžių raktinį žodį, kompiliatorius įtikina, kad metode esanti išimtis turi būti tvarkoma skambinančiojo metodu, todėl nėra kompiliavimo klaidos. Tačiau, skambinančiojo metodas turi tvarkyti išimtį arba perduoti atsakomybę tvarkyti išimtį iš savo hierarchijos metodo. Kai įvyksta vykdymo išimtis, tada net ir po raktinių žodžių naudojimo ji netrukdo neįprastai nutraukti programą. Jei skambinančiojo metodas yra pagrindinis (), pagal numatytąją JVM tvarko išimtį.
Bendra metimų raktinio žodžio forma yra:
return_type Method_name (parametrų sąrašas) išmeta išskirtinį klasę_listą {// metodas}
Mes matome, kad metimo raktinis žodis pasirodo po metodo pasirašymo ir jame gali būti sąrašas išimčių klasių, kurios gali atsirasti metode. Išimčių klasių, parašytų po raktinių žodžių metimo, sąrašas yra atskirtas kableliu.
Paimkime vieną pavyzdį, kad suprastume raktinių žodžių metimą.
calss Test {public static void main (String [] args) išmeta pertraukasException {thread sleep (10000); }}
Pirmiau pateiktame kode pagrindinė gija yra skirta tam, kad miegoti tam tikrą laiką naudojant miego () metodą. Dabar, kai pagrindinis metodas yra miego metu, gali būti, kad kiti siūlai gali nutraukti pagrindinį sriegį. Tačiau metimų raktinis žodis naudojamas po pagrindinio () metodo pasirašymo, todėl programa būtų lengvai sudaryta. Raktinių žodžių raktinis žodis skelbia, kad patikrinta išimties klasė nutraukta. Dabar, jei bet kuris kitas sriegis pertraukia pagrindinį sriegį vykdymo metu, metimų raktinis žodis perduotų šią išimtį į pagrindinio () metodo skambintoją, kuris yra JVM. JVM nutrauktų programą neįprastai.
Taškai, kuriuos reikia prisiminti dėl raktinių žodžių:
- Metimų raktinis žodis naudojamas tik deklaruojamoms išimties klasėms deklaruoti. Naudojimasis raktinių žodžių naudojimu nekontroliuojamai išimčiai neturi įtakos.
- Jei metodas nenori tvarkyti išimties savaime, jis perduoda šią išimtį tos klasės skambintojo metodui naudodamas metimo raktinį žodį.
- Jo naudojimas leidžia sklandžiai surinkti programą.
- Jei vykdymo metu atsiranda išimtis, programa nustoja galioti netgi po to, kai naudojamas raktinis žodis.
- Rekomenduojama naudoti bandomąjį / sugavimo bloką normaliam programos nutraukimui, jei vykdymo metu įvyksta išimtis.
Pastaba:
Raktinis žodis naudojamas tik „Java“. C + + ir C # nenaudoja raktinių žodžių.
Pagrindiniai skirtumai tarp metimų ir metimų
- Raktinis žodis mesti, perduoda išimties tvarkymo atsakomybę JVM rankiniu būdu, o raktinis žodis perduoda išimties tvarkymo atsakomybę į kodo, kuriame įvyko išimtis, skambinančiojo metodą.
- Po metimo raktinio žodžio seka išimties objektas, kurį jis perduoda JVM. Kita vertus, po raktinių žodžių seka išskirtinės klasės, kurios gali atsirasti metode.
- Raktinio žodžio raktas vienu metu gali išmesti vieną išimties objektą, o metimų raktinis žodis gali deklaruoti keletą išskirtinių klasių, atskirtų kableliais vienu metu.
Išvada:
Raktinio žodžio raktas geriausiai naudojamas pritaikytai išimčiai. Bandymo / gaudymo blokas yra geriausias, jei norite palyginti išimtis lyginant raktinį žodį.