Wat is een uitzonderingshandler in Java?
In Java zijn uitzonderingen een van de vele structuren die de besturingsstroom van een programma bepalen. In het bijzonder zijn het onbedoelde neveneffecten van de normale uitvoering van een programma. Bij het schrijven van code die uitzonderingen kan tegenkomen, moet de programmeur nieuwe instructies voor het programma definiëren als er een uitzondering optreedt, een proces dat bekend staat als "afhandeling van uitzonderingen". Exception-handlers zijn gemaakt van drie verschillende blokken: try, catch en finally.
Java-uitzonderingen
Wanneer een programma een methode oproept die zich op een onverwachte manier gedraagt, zou er een "uitzondering" zijn opgetreden. Als het programma bijvoorbeeld probeert een getal te delen door nul of een bestand laadt dat niet bestaat, werkt het programma mogelijk niet zoals verwacht en zal het een uitzondering genereren om deze fout te signaleren. Als een methode is gedefinieerd om een uitzondering in de hoofdtekst van de methode op te nemen, kunt u deze alleen binnen een uitzonderingshandler gebruiken - of de fout in de boomstructuur doorgeven door te verklaren dat de methode die deze aanroept ook dezelfde uitzondering genereert.
Probeer Blokken
In een succesvolle uitzonderingshandler moet de methode die de uitzondering genereert zich in een "try" -blok bevinden, zoals in "try {exceptionThrowingMethod ();}" Nadat het try-blok is gedefinieerd, definieert de programmeur catch-blokken die de uitzonderingsmethoden vangen vervat in de try block throw.
Catch Blocks
Een enkel try-blok kan meerdere "catch" -blokken bevatten om verschillende gedragingen te definiëren wanneer een uitzondering wordt aangetroffen. Als een programma een uitzondering tegenkomt die is gedefinieerd in meerdere blokkeringsblokken, wordt eerst het bovenste blok catch uitgevoerd. Aangezien alle uitzonderingen afstammen van de uitzonderingsklasse, betekent dit dat als uw eerste vangblok "catch (Uitzondering e) {}" leest, dat programma altijd dat blok zal uitvoeren wanneer het een uitzondering tegenkomt en nooit een van de andere. Rangschik uw vangstblokken van de meest specifieke tot de minst specifieke als u fijnmazige controle over uw programma wilt.
Eindelijk blokken
Een "finally" -blok is een optioneel onderdeel van een uitzonderingshandler. Gebruik het om gedrag te definiëren dat altijd moet worden uitgevoerd, zelfs als er een uitzondering wordt aangetroffen. Dit is in sommige gevallen nodig omdat je niet kunt garanderen dat het laatste deel van het try-blok wordt uitgevoerd. Als een uitzondering wordt gegooid en gevangen, wordt dat blok op dat moment onderbroken. Als u bijvoorbeeld "InputStream.close ()" in een finally-blok plaatst, zorgt u ervoor dat ongeacht de uitzondering die eerder in de code is gegenereerd, uw streams veilig worden gesloten.