Verschil tussen uitzondering en fout

Verschil tussen uitzondering en fout
Verschil tussen uitzondering en fout

Video: Verschil tussen uitzondering en fout

Video: Verschil tussen uitzondering en fout
Video: NAT vs PAT, Static vs Dynamic -- demystified! -- Network Address Translation 2024, Juli-
Anonim

Uitzondering versus fout

Onverwacht gedrag is onvermijdelijk wanneer een programma draait. Dit kan te wijten zijn aan uitzonderingen of fouten. Uitzonderingen zijn gebeurtenissen die het normale programmaverloop kunnen verstoren. Fouten zijn omstandigheden die als onherstelbaar kunnen worden beschouwd. Uitzonderingen zijn meestal gerelateerd aan de applicatie zelf, terwijl fouten gerelateerd zijn aan het systeem waarop het programma draait.

Wat is een uitzondering?

Uitzondering is een gebeurtenis die de normale programmastroom kan 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. Exception-object wordt gemaakt door de methode waarin de uitzondering is opgetreden. Uitzonderingsobject bevat nuttige informatie zoals het type en de beschrijving van de uitzondering. 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). Aanroepstack is de geordende lijst met methoden die zijn aangeroepen voorafgaand aan de methode waarin de uitzondering optrad. Het runtime-systeem is succesvol als het een methode vindt met een uitzonderingshandler. Exception handler is een codeblok dat de genoemde uitzondering officieel kan afhandelen. Als het runtime-systeem een geschikte handler vindt (d.w.z. het type uitzondering komt overeen met het type dat kan worden afgehandeld), zal het het exception-object doorgeven 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 'Throwable class'. NullPointerException en ArrayIndexOutOfBoundsException zijn twee veelvoorkomende uitzonderingen in Java.

Wat is een fout?

Een fout is een toestand die als onherstelbaar kan worden beschouwd, zoals het programma dat een grotere hoeveelheid geheugen nodig heeft dan beschikbaar is. Deze fouten kunnen tijdens runtime niet worden afgehandeld. Als er een fout optreedt, wordt het programma beëindigd. In Java erven fouten van de Throwable-klasse. Fouten staan meestal voor ernstige problemen die de programmeur (of de applicatie) niet zou moeten proberen op te lossen. Fouten zijn gewoon abnormale omstandigheden, die onder normale omstandigheden nooit worden verwacht en daarom nooit worden voorzien. OutOfMemoryError, StackOverflowError en ThreadDead zijn bijvoorbeeld dergelijke fouten. Methoden mogen nooit handlers voor fouten hebben.

Wat is het verschil tussen uitzondering en fout?

Zowel fouten als uitzonderingen komen ongewenst voor tijdens de uitvoering van een programma. Ze hebben echter belangrijke verschillen. Uitzonderingen kunnen door de programmeur worden voorzien, terwijl een fout moeilijk te voorzien is. Uitzonderingen kunnen worden aangevinkt of uitgevinkt. Maar fouten zijn altijd ongecontroleerd. Uitzonderingen duiden meestal op een fout veroorzaakt door de programmeur. Er treden echter fouten op als gevolg van een systeemfout of een ongepast gebruik van een bron. Daarom moeten uitzonderingen op applicatieniveau worden afgehandeld, terwijl fouten op systeemniveau moeten worden opgelost (alleen indien mogelijk). Na het afhandelen van een uitzondering, keert u gegarandeerd terug naar de normale programmastroom. Maar zelfs als er een fout wordt ontdekt, weet de programmeur misschien niet hoe hij ermee om moet gaan. In tegenstelling tot traditionele foutafhandeling, maken uitzonderingen het mogelijk om foutafhandelingscode te scheiden van gewone code.

Aanbevolen: