Verschil tussen aangevinkte uitzondering en runtime-uitzondering

Verschil tussen aangevinkte uitzondering en runtime-uitzondering
Verschil tussen aangevinkte uitzondering en runtime-uitzondering

Video: Verschil tussen aangevinkte uitzondering en runtime-uitzondering

Video: Verschil tussen aangevinkte uitzondering en runtime-uitzondering
Video: Relatieve snelheid 2024, November
Anonim

Aangevinkte uitzondering versus runtime-uitzondering

Uitzonderingen zijn speciale gebeurtenissen die de normale programmastroom kunnen verstoren. De naam uitzondering komt van "uitzonderlijke gebeurtenis". Het genereren van een uitzondering is het proces waarbij een uitzonderingsobject wordt gemaakt en aan het runtime-systeem wordt overgedragen. Wanneer het runtime-systeem het exception-object ontvangt, zal het proberen iemand te vinden om het binnen de call-stack af te handelen door het in de omgekeerde volgorde te doorlopen (waarin de methoden werden aangeroepen). Het runtime-systeem is succesvol als het een methode vindt met een exception-handler. Exception handler is een codeblok dat de genoemde uitzondering officieel kan afhandelen. Als het runtime-systeem een geschikte handler vindt, geeft het het exception-object door aan de handler. Dit heet het vangen van de uitzondering. Als de uitzondering echter niet kan worden afgehandeld, wordt het programma beëindigd. In Java erven uitzonderingen van de Throwable-klasse. Aangevinkte uitzonderingen zijn uitzonderingen waarop de afhandeling door de compiler wordt afgedwongen. Runtime-uitzonderingen zijn een soort uitzonderingen die niet worden gecontroleerd door de compiler.

Wat is een gecontroleerde uitzondering?

Aangevinkte uitzonderingen zijn objecten van de klasse java.lang.exception of zijn subklassen (behalve de java.lang. RuntimeException en zijn subklassen). Gecontroleerde uitzonderingen worden tijdens het compileren "gecontroleerd". Dat betekent dat de programmeur deze uitzonderingen moet opvangen of weggooien, anders zou de compiler gaan klagen (waardoor een compilerfout wordt veroorzaakt). Om deze reden zijn veel gecontroleerde uitzonderingen zeer goed bekend bij programmeurs. De IOException en zijn subklassen zijn bijvoorbeeld gecontroleerde uitzonderingen, en wanneer de programmeur te maken heeft met het openen of wijzigen van een bestand, controleert de compiler om ervoor te zorgen dat alle mogelijke IOExceptions door de programmeur worden afgehandeld.

Wat is een runtime-uitzondering?

Runtime Exceptions bestaan uit java.lang. RuntimeException en al zijn subklassen. Theoretisch gezien hebben ze hetzelfde doel als gecontroleerde uitzonderingen en kunnen ze worden gegenereerd of afgehandeld als gecontroleerde uitzonderingen, maar de verwerking ervan wordt niet afgedwongen door de compiler. Daarom behoren runtime-uitzonderingen tot de familie van niet-aangevinkte uitzonderingen. NullPointerException, NumberFormatEception, ClassCastException en ArrayIndexOutOfBoundsException zijn veelvoorkomende runtime-uitzonderingen in Java.

Wat is het verschil tussen gecontroleerde uitzondering en runtime-uitzondering?

Hoewel zowel gecontroleerde uitzonderingen als runtime-uitzonderingen ongewenst zijn tijdens de uitvoering van een programma, hebben ze hun verschillen. De afhandeling van gecontroleerde uitzonderingen wordt afgedwongen door de compiler, maar runtime-uitzonderingen niet. Daarom moeten gecontroleerde uitzonderingen worden gegenereerd of afgehandeld om de code te compileren, maar er is geen vereiste met betrekking tot runtime-uitzonderingen. Bijgevolg behoren runtime-uitzonderingen samen met fouten tot de categorie voor niet-aangevinkte uitzonderingen.

Nadeel met aangevinkte uitzonderingen is dat de programmeur ermee moet omgaan, zelfs als ze niet weet hoe. Dus als de programmeur gewoon een nieuwe uitzondering genereert zonder het origineel te verpakken, gaat de stacktracering die bij de oorspronkelijke uitzondering hoort, verloren. Dit is waar runtime-uitzonderingen van pas komen. Omdat alle runtime-uitzonderingen op één plek kunnen worden afgehandeld, kunnen programmeurs minder code schrijven. Aan de andere kant, aangezien gecontroleerde uitzonderingen moeten worden opgevangen, is er geen verrassing voor de programmeur. Ze zal altijd weten welke gecontroleerde uitzondering door een bepaalde methode kan worden gegenereerd. In tegenstelling hiermee kunnen verschillende runtime-uitzonderingen worden gegenereerd zonder medeweten van de programmeur.

Aanbevolen: