Doporučená, 2021

Redakce Choice

Rozdíl mezi hody a hody v Javě

Házení a házení jsou klíčová slova použitá při zpracování výjimek. Klíčové slovo throw se používá k ručnímu předání instance výjimky vytvořené programátorem do JVM. Klíčové slovo throws použité k předání odpovědnosti za zpracování výjimky nastalo v metodě metody volajícího. Základní rozdíl mezi hodem a hody je, že klíčové slovo throw používá objekt výjimky, zatímco klíčové slovo throws používá název třídy výjimek.

Srovnávací graf

Základ porovnáváníhodhodí
ZákladníKlíčové slovo hodu předá náš vytvořený objekt výjimky ručně JVM.Klíčové slovo throws se používá k delegování odpovědnosti za zpracování výjimek na volajícího metody.
Syntaxhodit hoditelnou instanci;return_type method_name (parametr-list) vyvolá seznam ExceptionClass_list
{
soubor metody
}
NásledovánKlíčové slovo throw následuje objekt výjimky.Za klíčovým slovem throws následuje seznam tříd výjimek, které se mohou vyskytnout v metodě.
Číslo výjimky hozenoKlíčové slovo throw může vyvolat jednu instanci výjimky.Klíčové slovo throws může deklarovat více tříd výjimek oddělených čárkou.

Definice hodu

Klíčové slovo „ throw “ se používá k ručnímu předání naší vytvořené instance výjimky JVM (Java Virtual Machine). Pokud "throw" není použito k vyvolání instance výjimky a výjimka nastane, pak runtime systém interně vyvolá instanci výjimky na JVM a program se ukončí abnormálně. Obecná forma klíčového slova throw je:

 hodit Throwable_instance; 

Nad Throwable_instance musí být objekt třídy Throwable. Primitivní typy, jako například int, float nebo char a instanci třídy, kterou nelze použít, nelze házet pomocí klíčového slova throw.

Vezměme si příklad, abychom porozuměli hodu klíčového slova.

 Třída Test {Public static void main (String [] args) {vyvolá novou ArithmeticException ("/ o nulu"); }} 

Ve výše uvedeném kódu hází klíčové slovo instanci třídy Exception „ArithmeticException“. Pokud klíčové slovo throw nebylo použito, metoda main () by interně vytvořila objekt výjimky předaný JVM.

Body k zapamatování o hodu klíčového slova:

  • Manuální předání objektu výjimky do JVM.
  • Nejvhodnější pro výjimky definované uživatelem nebo přizpůsobené výjimky.
  • Pokud není paměť přidělena objektu výjimky hozenému klíčovým slovem throw, dojde k výjimce runtime, NullPointerException.
  • Klíčové slovo házení zastaví provádění programu ihned po jeho výskytu. po příkazu throw nemůžeme přímo psát žádné prohlášení. Pokud zapíšeme libovolný stav přímo po příkazu throw, kompilátor během kompilace zobrazí chybu, nedosažitelný příkaz.
  • Pomocí klíčového slova throw lze házet pouze objekty třídy Throwable. Pokud objekt, který je hozen, není objekt třídy Throwable, dostaneme chybu kompilace „Nekompatibilní typ nalezen. . požadované java.lang.Throwable “

Poznámka:

Klíčové slovo throw se používá v C ++, JAVA, C #, pro ruční vyvolání výjimky.

Definice hodů

Klíčové slovo „ throws “ se používá k delegování odpovědnosti za zpracování výjimky, ke které došlo v metodě, k její metodě volajícího. Metoda volajícího je zodpovědná za zpracování výjimky, kterou může být jakákoliv jiná metoda nebo JVM. Deklaruje seznam tříd výjimek, které se mohou vyskytnout v metodě.

Použití klíčového slova throws přesvědčí kompilátor, že výjimka, ke které došlo v metodě, má být zpracována metodou volajícího, proto nedochází k žádné chybě kompilace. Metoda volajícího však musí zpracovat výjimku nebo delegovat odpovědnost za zpracování výjimky z její metody hierarchie. Když nastane výjimka runtime, pak ani po použití klíčového slova throws nezabrání abnormálnímu ukončení programu. Pokud je metoda volajícího hlavní (), JVM standardně zpracovává výjimku.

Obecná forma klíčového slova throws je:

 return_type method_name (parametr-list) vyvolá exceptionClass_list {// tělo metody} 

Můžeme vidět, že klíčové slovo se objeví po podpisu metody a může obsahovat seznam tříd výjimek, které se mohou v metodě vyskytnout. Seznam tříd výjimek zapsaných po vyvolání klíčového slova je oddělen čárkou.

Vezměme si jeden příklad, abychom pochopili klíčové slovo throws.

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

Ve výše uvedeném kódu je hlavní podproces spán na určitý čas pomocí metody sleep (). Když je hlavní metoda ve spánku, je možné, že ostatní vlákna mohou přerušit hlavní vlákno. Ale klíčové slovo throws se používá po podpisu metody main (), takže program by se snadno zkompiloval. Klíčové slovo throws deklaruje kontrolovanou výjimku třídy InterruptedException. Pokud by při přerušení hlavního vlákna během běhu přerušelo jakékoli vlákno, klíčové slovo throws by předalo tuto výjimku volajícímu metody main (), což je JVM. JVM by program abnormálně ukončil.

Body, na které si vzpomenete na klíčové slovo:

  • Klíčové slovo throws se používá pouze pro deklaraci tříd kontrolovaných výjimek. Použití klíčového slova throws pro nekontrolovanou výjimku nemá žádný vliv.
  • Pokud metoda nechce zpracovat výjimku sama, deleguje tuto výjimku na metodu volajícího dané třídy pomocí klíčového slova throws.
  • Jeho použití umožňuje pouze plynulé kompilace programu.
  • Pokud dojde k výjimce za běhu, program se ukončí abnormálně, a to i po použití klíčového slova throws.
  • Doporučuje se použít blok try / catch pro normální ukončení programu, pokud se vyskytne výjimka při běhu programu.

Poznámka:

Klíčové slovo hází pouze v Javě. C ++ a C # nepoužívají klíčové slovo throws.

Klíčové rozdíly Mezi házením a házením

  1. Klíčové slovo hází, předává odpovědnost za zpracování výjimek na JVM ručně, zatímco klíčové slovo hází, předává odpovědnost za zpracování výjimek na volající metodu kódu, kde došlo k výjimce.
  2. Klíčové slovo throw následuje objekt výjimky, který předá JVM. Na druhou stranu, throws klíčové slovo následuje třídy výjimek, které mohou nastat v metodě.
  3. Klíčové slovo throw může v jednom okamžiku vyvolat jeden objekt výjimky, zatímco klíčové slovo throws může deklarovat více tříd výjimek oddělených čárkou najednou.

Závěr:

Klíčové slovo throw je nejvhodnější pro vlastní výjimku. Blok try / catch je nejlepší pro zpracování výjimek ve srovnání s klíčovým slovem throws.

Top