V Javě, zpracování výjimek je jedním z účinných prostředků pro řešení chyb za běhu, aby bylo možné zachovat pravidelný tok aplikace. Java Exception Handling je mechanismus pro zpracování runtime chyb, jako jsou ClassNotFoundException, IOException, SQLException, RemoteException atd.
V tomto článku se dozvíme o throw a throws v Javě, která dokáže zpracovat výjimky v Javě.
Java hod
Klíčové slovo throw v Javě se používá k explicitnímu vyvolání výjimky z metody nebo libovolného bloku kódu. Můžeme hodit obojí zaškrtnutá nebo nezaškrtnutá výjimka . Klíčové slovo throw se používá hlavně k vyvolání vlastních výjimek.
Syntaxe v Java throw
throw Instance Example: throw new ArithmeticException('/ by zero');>
Ale tato výjimka, tj. Instance musí být typu Vhazovatelné nebo podtřída Vhazovatelné .
Například , Exception je podtřída Throwable a uživatelem definované výjimky typicky rozšiřují třídu Exception . Na rozdíl od C++ nelze jako výjimky použít datové typy jako int, char, floats nebo non-throwable třídy.
Tok provádění programu se zastaví okamžitě po provedení příkazu throw a nejbližším uzavření Snaž se blok je zkontrolován, zda má a chytit prohlášení, které odpovídá typu výjimky. Pokud najde shodu, control se přenese do tohoto příkazu, jinak se přiloží k dalšímu Snaž se blok je zkontrolován a tak dále. Pokud nedojde ke shodě chytit je nalezen, pak výchozí obsluha výjimky program zastaví.
Příklady házení Java
Příklad 1:
Jáva
může třída rozšířit více tříd
// Java program that demonstrates the use of throw> class> ThrowExcep {> > static> void> fun()> > {> > try> {> > throw> new> NullPointerException(> 'demo'> );> > }> > catch> (NullPointerException e) {> > System.out.println(> 'Caught inside fun().'> );> > throw> e;> // rethrowing the exception> > }> > }> > public> static> void> main(String args[])> > {> > try> {> > fun();> > }> > catch> (NullPointerException e) {> > System.out.println(> 'Caught in main.'> );> > }> > }> }> |
>
>
Výstup
python programy
Caught inside fun(). Caught in main.>
Příklad 2
Jáva
// Java program that demonstrates> // the use of throw> class> Test {> > public> static> void> main(String[] args)> > {> > System.out.println(> 1> /> 0> );> > }> }> |
>
>
Výstup
Exception in thread 'main' java.lang.ArithmeticException: / by zero>
Java hází
throws je klíčové slovo v Javě, které se používá v podpisu metody k označení, že tato metoda může vyvolat jednu z uvedených výjimek typu. Volající těchto metod musí zpracovat výjimku pomocí bloku try-catch.
Syntaxe Java throws
type method_name(parameters) throws exception_list exception_list is a comma separated list of all the exceptions which a method might throw.>
Pokud v programu existuje možnost vyvolání výjimky, kompilátor nás na to vždy upozorní a povinně bychom měli tuto kontrolovanou výjimku zpracovat. Jinak se zobrazí chyba doby kompilace, která říká neohlášená výjimka XXX musí být zachycena nebo deklarována jako vyvolaná . Abychom zabránili této chybě při kompilaci, můžeme výjimku zpracovat dvěma způsoby:
- Pomocí try catch
- Pomocí hází klíčové slovo
Můžeme použít klíčové slovo throws k delegování odpovědnosti za zpracování výjimek na volajícího (může to být metoda nebo JVM), pak je metoda volajícího zodpovědná za zpracování této výjimky.
Java nabízí příklady
Příklad 1
Jáva
převést řetězec na char
// Java program to illustrate error in case> // of unhandled exception> class> tst {> > public> static> void> main(String[] args)> > {> > Thread.sleep(> 10000> );> > System.out.println(> 'Hello Geeks'> );> > }> }> |
>
>
Výstup
error: unreported exception InterruptedException; must be caught or declared to be thrown>
Vysvětlení
Ve výše uvedeném programu dostáváme chybu doby kompilace, protože existuje šance na výjimku, pokud hlavní vlákno přejde do režimu spánku, ostatní vlákna dostanou šanci spustit metodu main(), která způsobí InterruptedException.
Příklad 2
Jáva
včetně programování c
// Java program to illustrate throws> class> tst {> > public> static> void> main(String[] args)> > throws> InterruptedException> > {> > Thread.sleep(> 10000> );> > System.out.println(> 'Hello Geeks'> );> > }> }> |
>
>
Výstup
Hello Geeks>
Vysvětlení
Ve výše uvedeném programu jsme pomocí klíčového slova throws zpracovali InterruptedException a výstup dostaneme jako Ahoj Geekové
Příklad 3
Jáva
// Java program to demonstrate working of throws> class> ThrowsExecp {> > static> void> fun()> throws> IllegalAccessException> > {> > System.out.println(> 'Inside fun(). '> );> > throw> new> IllegalAccessException(> 'demo'> );> > }> > public> static> void> main(String args[])> > {> > try> {> > fun();> > }> > catch> (IllegalAccessException e) {> > System.out.println(> 'caught in main.'> );> > }> > }> }> |
středové tlačítko css
>
>
Výstup
Inside fun(). caught in main.>
Důležité body k zapamatování o klíčovém slově házení
- Klíčové slovo throws je vyžadováno pouze pro zaškrtnuté výjimky a použití klíčového slova throws pro nezaškrtnuté výjimky nemá smysl.
- Klíčové slovo throws je vyžadováno pouze k přesvědčení kompilátoru a použití klíčového slova throws nezabrání abnormálnímu ukončení programu.
- Pomocí klíčového slova throws můžeme poskytnout informaci volajícímu metody o výjimce.