V této Java výjimky tutorial, dozvědět se, co výjimku je v Javě, co je kontrolována výjimkou, a jak se liší od nekontrolovaná výjimka. Naučíme se také některé osvědčené postupy kolem Java kontrolovaných výjimek.
Table of Contents1. What is an exception in Java?2. Checked vs unchecked exceptions in Java3. Java exception handling best practices
jaká je výjimka v Javě?
„výjimkou je neočekávaná událost, která nastane během provádění programu, který narušuje normální tok instrukcí.,“
v Javě jsou všechny chyby a výjimky reprezentovány třídou. Když dojde k chybě v rámci metody, metoda vytvoří objekt (jakéhokoli podtypu Throwable
) a předá jej runtime systému. Objekt, nazvaný objekt výjimky.
objekt výjimky obsahuje informace o chybě, včetně jejího typu a stavu programu, když došlo k chybě. Vytvoření objektu výjimky a jeho předání do runtime systému se nazývá házení výjimky.
1.1., Zpracování výjimek
máme dvě možnosti, když je v naší aplikaci vytvořen objekt výjimky.
- buď to zvládneme v rámci metody
- , nebo ji můžeme předat metodě volajícího, abychom ji nechali zpracovat.
toto je velmi důležité rozhodnutí, které je třeba učinit při stanovení odpovědnosti metody. Metoda by měla jasně naznačit, jaké všechny výjimečné scénáře zvládne a které ne. Je definován v syntaxi metody pomocí hodů klauzule.
abychom zvládli výjimku, musíme výjimku chytit v sekci úlovku bloku try-catch.,
If an exception is not handled in the application, then it will propagate to JVM and JVM will usually terminate the program itself.
Checked vs unchecked exceptions in Java
2.1. Exception Hierarchy
In Java, exceptions are broadly categorized into two sections: checked exceptions and unchecked exceptions.
2.2. Checked Exceptions
Java forces you to handle these error scenarios in some manner in your application code., Přijdou okamžitě do tváře, jakmile začnete sestavovat svůj program. Určitě je můžete ignorovat a nechat je projít JVM, ale je to špatný zvyk. V ideálním případě musíte tyto výjimky zpracovat na vhodné úrovni uvnitř aplikace, abyste mohli uživatele informovat o selhání a požádat ho, aby se znovu pokusil/ přišel později.
obecně kontrolované výjimky označují chybové scénáře, které jsou mimo okamžitou kontrolu programu. Vyskytují se obvykle v interakci s externími zdroji / síťovými zdroji, např. problémy s databází, chyby síťového připojení, chybějící soubory atd.,
Checked exceptions are subclasses of Exception class.
Example of checked exceptions are : ClassNotFoundException, IOException, SQLException and so on.
Checked Exception Example
FileNotFoundException
is a checked exception in Java. Anytime, we want to read a file from filesystem, Java forces us to handle error situation where file may not be present in place.
public static void main(String args) { FileReader file = new FileReader("somefile.txt");}
In above case, you will get compile time error with message – Unhandled exception type FileNotFoundException
.,
aby byl program schopen kompilovat, musíte tuto chybovou situaci zvládnout v bloku try-catch
. Níže uvedený kód bude kompilovat naprosto v pořádku.
2.3. Nezaškrtnuté výjimky
Java také poskytuje UncheckedExceptions, jejichž výskyty nejsou kontrolovány kompilátorem. Jakmile bude spuštěn jakýkoli kód buggy, ožijí/se objeví ve vašem programu.
metoda není kompilátorem nucena deklarovat nekontrolované výjimky vyvolané její implementací. Obecně platí, že takové metody je téměř vždy nevyhlašují.,
nezaškrtnuté výjimky jsou podtřídy RuntimeException. Například nekontrolované výjimky jsou : ArithmeticException
ArrayStoreException
ClassCastException
, a tak dále.
RuntimeException
je sám o sobě podtřídu Exception
, tj. všechny nekontrolované výjimky třídy měly být kontrolovány výjimky implicitně, ALE nejsou.“unchecked Exception Example
Checkout uvedený kód níže. Výše uvedený kód nedává žádnou chybu čas kompilace., Ale když jste příklad, hodí NullPointerException
. NullPointerException je nekontrolovaná výjimka v Javě.
Pamatujte si, že největší rozdíl mezi checked a unchecked výjimky je, že zkontrolovat výjimky jsou nuceni kompilátoru a používá se k označení mimořádných podmínek, které jsou mimo kontrolu programu (například I/O chyby), zatímco nekontrolované výjimky došlo v průběhu běhu a používá se k označení programové chyby (například, null pointer).,
Java exception handling osvědčených postupů
- Kontrolované výjimky lze použít, pokud metoda nemůže dělat to, co jeho jméno říká, že to dělá. například metoda s názvem prepareSystem (), které pre-naplnit konfigurační soubory a udělat nějaké konfiguraci pomocí nich může prohlásit, házení
FileNotFoundException
což znamená, že metoda používá konfigurační soubory ze systému souborů. - kontrolované výjimky by v ideálním případě neměly být nikdy použity pro programovací chyby, ale v takových případech by měly být absolutně použity pro chyby zdrojů a pro řízení toku.,
- házet pouze ty výjimky, které metoda nemůže zvládnout v žádném případě. Metoda by se měla nejprve pokusit zvládnout, jakmile se setká. Vyhoďte výjimku pouze v případě, že není možné zvládnout vnitřní metodu.
- dobrým způsobem, jak definovat podpisy metody, je deklarovat výjimky blízké názvu metody. Pokud je vaše metoda pojmenována
openFile
, očekává se, že hodíFileNotFoundException
?. Pokud je vaše metoda pojmenovánafindProvider
, očekává se, že hodíNoSuchProviderException
.,také tyto výjimky by měly být kontrolovány výjimky, protože nutí volajícího řešit problémy, které jsou vlastní sémantice vašich metod.
- pravidlo je, pokud lze rozumně očekávat, že klient se zotaví z výjimky, učinit z něj kontrolovanou výjimku. Pokud klient nemůže udělat nic pro zotavení z výjimky, udělejte z něj nekontrolovanou výjimku.
ve skutečnosti se většina aplikací bude muset zotavit z téměř všech výjimek, včetně
NullPointerException
,IllegalArgumentExceptions
a mnoha dalších nekontrolovaných výjimek., Akce / transakce, která se nezdařila, bude přerušena, ale aplikace musí zůstat naživu a být připravena sloužit další akci / transakci.jediný čas, kdy je obvykle legální vypnout aplikaci, je při spuštění. Pokud například chybí konfigurační soubor a aplikace bez něj nemůže dělat nic rozumného, je legální aplikaci vypnout.,
Závěr
V tomto příspěvku, jsme se dozvěděli rozdíl mezi kontrolovány vs nekontrolované výjimky v Javě, spolu s tím, jak zvládnout nekontrolovaných výjimek, vlastní výjimky, hierarchie výjimek v Javě s příklady.
neváhejte a napište své dotazy do komentářů.
šťastné učení !!,
- Asynchronous and synchronous exceptions
- exception handling using inner classes
- exception handling best practices
- effectively handle NullPointerException
- Custom exceptions in Java
- Java exception doc
Leave a Reply