Om een Java-programma zo robuust mogelijk te maken, moet het uitzonderingen kunnen verwerken. De compiler draagt zijn steentje bij door u niet toe te staan een programma te compileren totdat het syntactisch correct is en kan ook wijzen op gecontroleerde uitzonderingen die moeten worden afgehandeld. Maar de uitzonderingen die waarschijnlijk de meeste hoofdpijn veroorzaken, zijn de uitzonderingen die verschijnen zodra het programma wordt uitgevoerd. Om met deze uitzonderingen om te gaan, biedt de Java-taal de try-catch-eindelijk-blokken.
De
proberenblock bevat alle verklaringen die een uitzondering kunnen veroorzaken. Als u bijvoorbeeld gegevens uit een bestand leest met de
FileReaderverwacht wordt dat je de
IOExceptionsgeassocieerd met het gebruik van een
FileReaderobject bijvoorbeeld,
FileNotFoundExceptionen
IOException. Om ervoor te zorgen dat dit gebeurt, kunt u de verklaringen plaatsen die te maken hebben met het maken en gebruiken van de
FileReaderobject in een
proberenblok: de code is echter onvolledig omdat we, om de uitzondering te kunnen afhandelen, een plaats nodig hebben om hem te vangen. Dit gebeurt in de
De
vangstblok (ken) een plaats bieden om de uitzondering af te handelen die door de verklaringen binnen een
proberenblok. De
vangstblok wordt direct gedefinieerd na de
proberenblok. Het moet het type uitzondering aangeven dat wordt verwerkt. Bijvoorbeeld de
FileReaderobject gedefinieerd in de bovenstaande code kan een gooien
FileNotFoundExceptionof een
IOException. We kunnen er twee specificeren
vangstblokken om met beide uitzonderingen om te gaan:
FileNotFoundExceptioncatchblokkeren kunnen we code plaatsen om de gebruiker te vragen het bestand voor ons te vinden en vervolgens proberen het bestand opnieuw te lezen. In de
IOExceptionvangstblok, kunnen we de I / O-fout gewoon doorgeven aan de gebruiker en hen vragen om iets anders te proberen. Hoe dan ook, we hebben het programma een manier geboden om een uitzondering op te vangen en op een gecontroleerde manier af te handelen.
vangstblok. Als de code die we wilden plaatsen in de twee
vangstblokken hierboven was precies hetzelfde als we in plaats daarvan de code konden schrijven: om een beetje huishouden te doen voor zover de bronnen gaan, kunnen we een eindelijk blok toevoegen. We willen tenslotte het bestand dat we hebben gelezen vrijgeven zodra we klaar zijn.
De verklaringen in het slotblok worden altijd uitgevoerd. Dit is handig om bronnen op te schonen in het geval dat het try-blok zonder uitzondering wordt uitgevoerd en in gevallen waarin er een uitzondering is. In beide gevallen kunnen we het gebruikte bestand sluiten.
Het slotblok verschijnt direct na het laatste vangblok: