Gecontroleerde versus niet-gecontroleerde uitzondering: verschil en vergelijking

Controleren op uitzonderingen is een van de belangrijkste dingen bij het programmeren en testen van software. Aangevinkte en niet-aangevinkte uitzondering zorgt ervoor dat het programma niet wordt uitgevoerd wanneer het een bug of fout probeert op te vangen.

Bovendien wordt het beschouwd als de verantwoordelijkheid van de programmeur om ervoor te zorgen dat deze fouten nooit optreden. Zowel aangevinkte als niet-aangevinkte uitzonderingen lijken uitzonderlijk veel op elkaar, maar zijn toch verschillend.

Key Takeaways

  1. De compiler controleert gecontroleerde uitzonderingen tijdens het compileren en moet door de programmeur worden afgehandeld met behulp van het try-catch-blok of het sleutelwoord throws, terwijl niet-gecontroleerde uitzonderingen optreden tijdens runtime en niet hoeven te worden afgehandeld.
  2. Gecontroleerde uitzonderingen worden gebruikt voor herstelbare fouten, zoals een bestand dat niet is gevonden, terwijl niet-gecontroleerde uitzonderingen worden gebruikt voor niet-herstelbare fouten, zoals onvoldoende geheugen of null pointer-uitzonderingen.
  3. Aangevinkte uitzonderingen maken deel uit van de handtekening van de methode, terwijl niet-aangevinkte uitzonderingen dat niet zijn.

Gecontroleerde versus ongecontroleerde uitzondering

Het verschil tussen gecontroleerde en niet-gecontroleerde uitzonderingen is dat aangevinkte uitzonderingen de uitzonderingen zijn die moeten worden opgevangen en afgehandeld door de checks()-instructie, anders zorgen ze ervoor dat een programma stopt en een stacktracering afdrukt, terwijl niet-gecontroleerde uitzonderingen daarentegen moeten hoeft helemaal niet te worden gevangen of gehanteerd, zoals het is programmeurverantwoordelijkheid om ervoor te zorgen dat deze fouten nooit gebeuren.

Gecontroleerd versus ongecontroleerd

De Checked-uitzondering is een specifiek type uitzondering die ervoor zorgt dat het programma niet wordt uitgevoerd totdat het wordt opgevangen door een catch-blok of wordt gespecificeerd in de throws-clausule van een methode. Bovendien wordt de Checked-uitzondering opgevangen en afgehandeld door de checks()-instructie, of ze zorgen ervoor dat een programma wordt beëindigd en een stacktracering wordt afgedrukt.

Als de code die de uitzondering veroorzaakte niet correct werd getest, kan dit vreemde ongecontroleerde uitzonderlijke bugs veroorzaken die moeilijk te vinden en op te lossen zijn.

Bovendien hoeven ongecontroleerde uitzonderingen helemaal niet te worden opgevangen of afgehandeld, aangezien het de verantwoordelijkheid van de programmeur is om ervoor te zorgen dat deze fouten nooit optreden.

Vergelijkingstabel

Parameters van vergelijking:Gecontroleerde uitzonderingOngecontroleerde uitzondering
DefinitieGecontroleerde uitzonderingen zijn uitzonderingen die moeten worden opgevangen en afgehandeld door de checks()-statements.Ongecontroleerde uitzonderingen hoeven helemaal niet te worden opgevangen of afgehandeld.
VoorvalEen catch-blok moet tijdens het compileren gecontroleerde uitzonderingen afhandelen. Niet-afgevangen uitzonderingen, ook wel runtime-uitzonderingen genoemd, zijn niet-gecontroleerde uitzonderingen.
foutafhandelingEen aangevinkte uitzondering zorgt ervoor dat het programma niet meer wordt uitgevoerd totdat het een bug of fout probeert op te sporen. Het is de verantwoordelijkheid van de programmeur om ervoor te zorgen dat deze fouten nooit optreden.
UitzonderingsklassenHet heeft wel uitzonderlijke klassen.Het heeft geen uitzonderlijke klassen, of het maakt geen belangrijk deel uit van uitzonderlijke klassen.
VoorbeeldOutOfMemoryError, NullPointerException en StackOverflowError.IndexOutOfBoundsException

Wat is gecontroleerde uitzondering?

Gecontroleerde uitzonderingen zijn nauw verwant aan het testen van software, bovendien is een gecontroleerde uitzondering een uitzondering die moet worden afgehandeld, anders wordt het programma beëindigd.

Lees ook:  Pinterest versus StumbleUpon: verschil en vergelijking

Dit betekent dat code na een throw-statement niet wordt uitgevoerd als geen catch-blok de uitzondering afhandelt.

Aangevinkte uitzonderingen hebben twee doelen: ze voorkomen dat het programma doorgaat wanneer er een fout is opgetreden en ze geven foutopsporingsinformatie over waar die fout te vinden is.

De compiler dwingt de programmeur niet om de uitzondering af te handelen, maar elke klasse die een andere klasse uitbreidt, moet ook alle aangevinkte uitzonderingen uitbreiden of implementeren.

Als dit niet het geval is, mislukt een compilatie van de uitbreidende klasse met een compileerfout die aangeeft dat deze alle door de superklasse gecontroleerde uitzonderingen moet afhandelen. Dit voorkomt dat overerving wordt gebruikt om ingebouwd te omzeilen storing modi.

Wanneer een uitzondering wordt gegenereerd, wordt deze doorgegeven aan de debugger in Eclipse of naar het besturingssysteem, dat het programma vervolgens normaal beëindigt. Het besturingssysteem drukt een stacktrace af.

Een stacktrace biedt informatie voor elke methodeaanroep in de volgorde waarin ze zijn aangeroepen. Hierdoor kan de programmeur vinden waar in de code of waar in de uitvoeringsstroom van hun code een uitzondering is opgetreden.

Wat is een ongecontroleerde uitzondering?

Er zijn ongecontroleerde uitzonderingen om programmeurs in staat te stellen flexibeler en efficiënter te programmeren. Java is ontworpen om programmeurs in staat te stellen toepassingen te maken die hulpbronnen efficiënt gebruiken en de schijn van een impasse voorkomen.

Ongecontroleerde uitzonderingen kunnen worden geëlimineerd door zorgvuldig ontwerp en codeerpraktijken. Alle uitzonderingen behalve NullPointerException in Java-code worden echter als uitgeschakeld beschouwd.

Ongecontroleerde uitzonderingen hoeven helemaal niet te worden opgevangen of afgehandeld.

Bovendien zijn ze een manier voor code op een hoger niveau om code op een lager niveau te vertellen dat het iets gaat doen dat niet thread-safe is, maar dat geen problemen zal veroorzaken als er op een bepaald moment maar één thread actief is, zoals sommige gegevens bijwerken of sommige afbeeldingen op het scherm weergeven.

Lees ook:  5.1 versus 7.2 Surround Sound: verschil en vergelijking

Het gebruik van ongecontroleerde uitzonderingen is een riskante propositie. Als een klasse een niet-gecontroleerde uitzondering gaat genereren, moet degene die die klasse gebruikt zich hiervan bewust zijn en een aantal rigoureuze methoden hebben om ermee om te gaan.

Een programmeur kan bijvoorbeeld wat gegevens uit een bestand willen lezen en het dan weer terugschrijven, en dit soort functionaliteit heeft geen synchronisatie nodig.

Het is perfect acceptabel voor een toepassing om dezelfde gegevens twee keer op twee verschillende threads te lezen zonder negatieve effecten op de systeemprestaties of stabiliteit.

Belangrijkste verschillen tussen aangevinkte en ongecontroleerde uitzonderingen

  1. Aangevinkte uitzonderingen zijn uitzonderingen die moeten worden opgevangen en afgehandeld door de instructies checks (), terwijl niet-aangevinkte uitzonderingen helemaal niet hoeven te worden opgevangen of afgehandeld.
  2. Aangevinkte uitzonderingen moeten tijdens het compileren worden afgehandeld door een catch-blok, terwijl niet-afgevangen uitzonderingen, ook wel runtime-uitzonderingen genoemd, niet-aangevinkte uitzonderingen zijn.
  3. De aangevinkte uitzondering zorgt ervoor dat het programma niet wordt uitgevoerd totdat het probeert een bug of fout op te sporen, terwijl niet-aangevinkte uitzonderingen de verantwoordelijkheid van de programmeur zijn om ervoor te zorgen dat deze fouten nooit optreden.
  4. Checked Exception heeft wel exceptionele klassen, terwijl Unchecked Exceptions geen exceptionele klassen hebben of geen belangrijk onderdeel zijn van exceptionele klassen.
  5. Een voorbeeld van een gecontroleerde uitzondering is een OutOfMemoryError, NullPointerException en StackOverflowError, terwijl een voorbeeld van een niet-gecontroleerde uitzondering een IndexOutOfBoundsException is.

Referenties

  1. https://ieeexplore.ieee.org/abstract/document/4343929/
  2. https://link.springer.com/article/10.1023/A:1010020917337

Laatst bijgewerkt: 11 juni 2023

stip 1
Een verzoek?

Ik heb zoveel moeite gestoken in het schrijven van deze blogpost om jou van waarde te kunnen zijn. Het zal erg nuttig voor mij zijn, als je overweegt het te delen op sociale media of met je vrienden/familie. DELEN IS ️

8 gedachten over "Gecontroleerde versus niet-gecontroleerde uitzondering: verschil en vergelijking"

  1. De uitgebreide dekking van de gecontroleerde en niet-gecontroleerde uitzonderingsconcepten, samen met hun toepassingen, biedt een uitgebreid begrip. Het artikel gaat effectief in op de fundamentele aspecten van deze uitzonderingen in de programmering.

    Antwoorden
  2. De uitleg in het artikel dat gecontroleerde uitzonderingen herstelbare fouten zijn, zoals bestand niet gevonden, en niet-gecontroleerde uitzonderingen onherstelbare fouten zijn, zoals onvoldoende geheugen, is relevant en onderstreept het belang van het maken van onderscheid tussen de twee.

    Antwoorden
  3. Het artikel biedt diepgaande informatie over gecontroleerde en niet-gecontroleerde uitzonderingen, waardoor duidelijk wordt hoe ze verschillen en welke functies ze dienen. Het legt ook uit hoe de compiler omgaat met gecontroleerde uitzonderingen tijdens het compileren en de verantwoordelijkheid van de programmeur bij het afhandelen van niet-gecontroleerde uitzonderingen.

    Antwoorden
  4. De discussie over gecontroleerde uitzonderingen die een try-catch-blok of throws-sleutelwoord vereisen terwijl niet-gecontroleerde uitzonderingen tijdens runtime voorkomen en niet hoeven te worden afgehandeld, is verhelderend. Het onderstreept de mogelijke scenario's voor het optreden van elk type uitzondering.

    Antwoorden
  5. De gedetailleerde uitleg van gecontroleerde uitzonderingen die deel uitmaken van de handtekening van een methode, terwijl niet-gecontroleerde uitzonderingen dat niet zijn, biedt waardevol inzicht in de aard van deze uitzonderingen. Het artikel communiceert effectief het onderscheid tussen de twee.

    Antwoorden
  6. Het artikel biedt een grondig overzicht van gecontroleerde en niet-gecontroleerde uitzonderingen, waarbij hun betekenis en implicaties voor de uitvoering van het programma worden benadrukt. De duidelijke beschrijving helpt bij het begrijpen van hun rol bij het ontwikkelen en testen van software.

    Antwoorden
  7. Het artikel presenteert een uitgebreide vergelijkingstabel die beknopt de verschillen schetst tussen gecontroleerde en niet-gecontroleerde uitzonderingen. De tabel vereenvoudigt het begrip van de twee soorten uitzonderingen, hun voorkomen en de manier waarop ze worden afgehandeld.

    Antwoorden
  8. De gedetailleerde informatie over gecontroleerde en niet-gecontroleerde uitzonderingen, inclusief de definitie, het voorkomen en de foutafhandeling, dient als een waardevolle hulpbron voor degenen die hun kennis van softwaretesten en programmeerprincipes willen verdiepen.

    Antwoorden

Laat een bericht achter

Dit artikel bewaren voor later? Klik op het hartje rechtsonder om op te slaan in je eigen artikelenbox!