i denna Java undantag tutorial, lära sig vad ett undantag är i Java, vad är en markerad undantag och hur det skiljer sig från en okontrollerad undantag. Vi kommer också att lära oss några bästa praxis kring Java kontrollerade undantag.
Table of Contents1. What is an exception in Java?2. Checked vs unchecked exceptions in Java3. Java exception handling best practices
vad är ett undantag i Java?
”ett undantag är en oväntad händelse som inträffar under genomförandet av ett program som stör det normala flödet av instruktioner.,”
i Java representeras alla fel och undantag med Kastbar klass. När ett fel inträffar inom en metod skapar metoden ett objekt (av vilken undertyp som helst av Throwable
) och skickar det till runtime-systemet. Objektet, som kallas ett undantagsobjekt.
Undantagsobjekt innehåller information om felet, inklusive dess typ och programmets tillstånd när felet uppstod. Att skapa ett undantagsobjekt och överlämna det till runtime-systemet kallas att kasta ett undantag.
1, 1., Undantagshantering
Vi har två val när ett undantagsobjekt skapas i vår ansökan.
- antingen hanterar vi det inom metod
- eller vi kan skicka det till uppringningsmetoden för att låta det Hantera.
det här är ett mycket viktigt beslut som ska fattas samtidigt som en metods ansvar fastställs. En metod bör tydligt ange att vad alla exceptionella scenarier Det kommer att hantera och som det inte kommer att. Det definieras i metod syntax med hjälp av throws klausul.
för att hantera undantaget måste vi fånga undantaget i fångstsektionen i försöksfångstblocket.,
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., De kommer omedelbart in i ditt ansikte, när du börjar sammanställa ditt program. Du kan definitivt ignorera dem och låta dem passera till JVM, men det är dålig vana. Helst måste du hantera dessa undantag på lämplig nivå i din ansökan så att du kan informera användaren om fel och be honom att försöka igen/ komma senare.
i allmänhet betecknar kontrollerade undantag felscenarier som ligger utanför programmets omedelbara kontroll. De förekommer oftast interagerar med externa resurser / nätverksresurser t.ex. databasproblem, nätverksanslutningsfel, saknade filer etc.,
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
.,
för att programmet ska kunna kompilera måste du hantera den här felsituationen i try-catch
– blocket. Nedan angiven kod kommer att sammanställa helt bra.
2.3. Unchecked Exceptions
Java tillhandahåller också UncheckedExceptions, vars händelser inte kontrolleras av kompilatorn. De kommer att komma in i livet / förekommer i ditt program, när någon buggy kod exekveras.
en metod tvingas inte av kompilatorn att deklarera de okontrollerade undantagen som kastas av dess genomförande. I allmänhet förklarar sådana metoder nästan alltid dem inte heller.,
omarkerade undantag är underklasser för RuntimeException. Exempel på okontrollerade undantag är: ArithmeticException
, ArrayStoreException
, ClassCastException
och så vidare.
RuntimeException
I sig är underklass tillException
dvs alla okontrollerade undantagsklasser borde ha kontrollerats underförstått, men det är de inte.”avmarkerat Undantagsexempel
kolla in den angivna koden nedan. Ovanstående kod ger inte någon kompilera tidsfel., Men när du exemplet, det kastar NullPointerException
. NullPointerException är avmarkerat undantag i Java.
Kom ihåg den största skillnaden mellan kontrollerade och okontrollerade undantag är att kontrollerade undantag tvingas av kompilatorn och används för att indikera exceptionella förhållanden som är utanför programmets kontroll (till exempel i/O-fel), medan okontrollerade undantag inträffade under körning och används för att indikera programmeringsfel (till exempel en null-pekare).,
Java exception handling best practices
- kontrollerade undantag kan användas när en metod inte kan göra vad namnet säger att den gör. t. ex. en metod som heter prepareSystem () som förpopulerar konfigurationsfiler och gör vissa konfigurationer med hjälp av dem, kan deklarera kasta
FileNotFoundException
vilket innebär att metoden använder konfigurationsfiler från filsystemet. - kontrollerade undantag bör helst aldrig användas för programmeringsfel, men absolut bör användas för resursfel och för flödeskontroll i sådana fall.,
- kasta endast de undantag som en metod inte kan hantera på något sätt. Metod bör först försöka hantera det så snart det möter. Kasta undantaget endast om det inte är möjligt att hantera inuti metoden.
- ett bra sätt att definiera metodsignaturer är att deklarera undantag nära metodens namn. Om din metod heter
openFile
förväntas den kastaFileNotFoundException
?. Om din metod heterfindProvider
förväntas den kastaNoSuchProviderException
.,även denna typ av undantag bör göras kontrollerade undantag eftersom det tvingar den som ringer att ta itu med de problem som är inneboende i semantiska av dina metoder.
- regeln är om en klient rimligen kan förväntas återhämta sig från ett undantag, gör det till ett kontrollerat undantag. Om en klient inte kan göra något för att återhämta sig från undantaget, gör det ett okontrollerat undantag.
i verkligheten måste de flesta program återhämta sig från i stort sett alla undantag, inklusive
NullPointerException
,IllegalArgumentExceptions
och många andra okontrollerade undantag., Åtgärden / transaktionen som misslyckades kommer att avbrytas men ansökan måste överleva och vara redo att tjäna nästa åtgärd / transaktion.den enda gången det normalt är lagligt att stänga av ett program är under start. Till exempel, om en konfigurationsfil saknas och programmet inte kan göra något förnuftigt utan det, då är det lagligt att stänga av programmet.,
slutsats
i det här inlägget lärde vi oss skillnaden mellan kontrollerade vs okontrollerade undantag i Java, tillsammans med hur man hanterar okontrollerade undantag, undantagshierarki i Java med exempel.
gärna släppa dina frågor i kommentarer.
Glad inlärning !!,
- 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