Tussen uitzonderingen met uitzondering van gecontroleerde uitzondering

Anonim

Gekontroleerde uitzondering versus Runtime Exception

Uitzonderingen zijn een speciaal type gebeurtenissen, die de normale programmastroom kunnen storen. De naam uitzondering komt van "uitzonderlijke gebeurtenis". Een uitzondering werpt het proces om een ​​uitzonderingsobject te creëren en af ​​te geven aan het runtime-systeem. Wanneer het runtime-systeem het uitzonderingsobject ontvangt, zal het proberen iemand te vinden om het binnen de call stack te verwerken door het in omgekeerde volgorde te doorbreken (waarin de methoden werden genoemd). Het runtime-systeem is succesvol als het een methode vindt met een uitzonderingsmanager. Exception Handler is een blok van code die officieel de genoemde uitzondering kan behandelen. Als het runtime-systeem een ​​geschikte handler vindt, wordt het uitzonderingsobject doorgestuurd naar de handler. Dit heet de uitzondering te vangen. Echter, als de uitzondering niet kan worden behandeld, zal het programma beëindigen. In Java erven uitzonderingen van de Throwable class. Gecontroleerde uitzonderingen zijn uitzonderingen waarop de verwerking door de compiler wordt afgedwongen. Runtime uitzonderingen zijn een soort uitzonderingen, die niet door de compiler worden gecontroleerd.

Wat is een gecontroleerde uitzondering?

Gekontroleerde uitzonderingen zijn ofwel objecten van de klas java. Lang. uitzondering of zijn subklassen (behalve de java. lang. RuntimeException en zijn subklassen). Gecontroleerde uitzonderingen worden "gecontroleerd" op compileertijd. Dat betekent dat de programmeur deze uitzonderingen moet opvangen of gooien, anders zou de compile klagen (wat een compiler fout veroorzaakt). Om deze reden zijn veel gecontroleerde uitzonderingen zeer bekend voor programmeurs. Bijvoorbeeld, de IOException en zijn subklassen zijn uitzonderingen gecontroleerd, en wanneer de programmeur zich bezighoudt met het openen of wijzigen van een bestand, controleert de compiler om ervoor te zorgen dat alle mogelijke IOExcepties door de programmeur worden verzorgd.

Wat is een Runtime Exception?

Runtime-uitzonderingen bestaan ​​uit java. Lang. RuntimeException en al zijn subklassen. Theoretisch gezien dienen ze hetzelfde doel als gecontroleerde uitzonderingen, en kunnen ze worden gegooid of behandeld als gecontroleerde uitzondering, maar de verwerking ervan wordt niet door de compiler afgedwongen. Daarom, Runtime uitzonderingen behoren tot de familie van ongemarkeerde uitzonderingen. NullPointerException, NumberFormatEception, ClassCastException en ArrayIndexOutOfBoundsException zijn gemeenschappelijke runtime uitzonderingen in Java.

Wat is het verschil tussen Gecontroleerde uitzondering en Runtime-uitzondering?

Hoewel beide uitzonderingen en runtime uitzonderingen ongewenst voorkomen tijdens de uitvoering van een programma, hebben ze hun verschillen. Gecontroleerde uitzonderingsbehandeling wordt afgedwongen door de compiler, maar uitzonderingen op runtime zijn niet.Daarom moeten gecontroleerde uitzonderingen worden gegooid of behandeld om de code te compileren, maar er is geen vereiste voor runtime-uitzonderingen. Bijgevolg behoren de runtime uitzonderingen tot de niet-gecontroleerde uitzonderingen categorie samen met fouten.

Nadelen met gecontroleerde uitzonderingen is dat de programmeur het moet behandelen, zelfs als ze niet weet hoe. Dus, als de programmeur gewoon een nieuwe uitzondering gooit zonder het origineel te wikkelen, zal het stapelspoor dat behoren tot de oorspronkelijke uitzondering, verloren gaan. Dit is waar de runtime uitzonderingen handig zijn. Omdat alle runtime uitzonderingen op een enkele plaats kunnen worden behandeld, kunnen programmeurs derhalve minder hoeveelheid code schrijven. Aan de andere kant, aangezien gecontroleerde uitzonderingen moeten worden gevangen, is er geen verrassing voor de programmeur. Ze zal altijd weten welke gecontroleerde uitzondering door een bepaalde methode kan worden gegooid. In tegenstelling tot dit, kunnen diverse runtime uitzonderingen worden gegooid zonder de kennis van de programmeur.