Verschil tussen uitzondering en fout

Anonim

Uitzondering versus Fout

onverwacht gedrag zijn gebonden wanneer een programma wordt uitgevoerd. Dit kan het gevolg zijn van uitzonderingen of fouten. Uitzonderingen zijn gebeurtenissen die de normale programmastroom kunnen storen. Fouten zijn voorwaarden die niet kunnen worden teruggevorderd. Uitzonderingen zijn meestal gerelateerd aan de applicatie zelf, terwijl fouten in verband staan ​​met het systeem waarop het programma loopt.

Wat is een uitzondering?

Uitzondering is een gebeurtenis, die de normale programmastroom kan 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. Uitzonderingsobject wordt gemaakt door de methode waarin de uitzondering zich voordoet. Uitzonderingsobject bevat nuttige informatie, zoals het type en de beschrijving van de uitzondering. 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). Oproepstapel is de bestelde lijst met methoden, die voorafgaand aan de methode werden genoemd waarin de uitzondering zich voordoet. 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 (bijvoorbeeld het type uitzondering dat overeenkomt met het type dat kan worden behandeld), zal het uitzonderingsobject doorgegeven worden aan 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 'Throwable class'. 'NullPointerException en ArrayIndexOutOfBoundsException zijn twee algemene uitzonderingen in Java.

Wat is een fout?

Een fout is een voorwaarde die onherstelbaar kan worden beschouwd, zoals het programma dat een hoeveelheid geheugen vereist dat groter is dan wat beschikbaar is. Deze fouten kunnen niet worden uitgevoerd op runtime. Als er een fout optreedt, zal het programma beëindigen. In Java, erfen fouten van de Throwable class. Fouten staan ​​meestal voor ernstige problemen die de programmeur (of de applicatie) niet mag proberen te vangen. Fouten zijn gewoon abnormale omstandigheden, die nooit worden verwacht onder normale omstandigheden, en daarom nooit verwacht. Bijvoorbeeld, OutOfMemoryError, StackOverflowError en ThreadDead zijn dergelijke fouten. Methodes moeten nooit handlers voor fouten hebben.

Wat is het verschil tussen uitzondering en fout?

Beide fouten en uitzonderingen zijn ongewenst tijdens het uitvoeren van een programma. Ze hebben echter belangrijke verschillen. Uitzonderingen kunnen worden voorzien door de programmeur, terwijl een fout moeilijk is te voorzien.Uitzonderingen kunnen worden gecontroleerd of uitgeschakeld. Maar fouten zijn altijd ongecontroleerd. Uitzonderingen geven typisch een fout aan die door de programmeur wordt veroorzaakt. Fouten optreden echter door een systeemfout of een ongepast gebruik van een bron. Daarom moeten uitzonderingen worden behandeld op het toepassingsniveau, terwijl fouten op het systeemniveau moeten worden gehandhaafd (alleen indien mogelijk). Na het afhandelen van een uitzondering, bent u gegarandeerd terug te keren naar de normale programmavloei. Maar zelfs als er een fout is gevangen, kan de programmeur het niet weten hoe hij het in de eerste plaats moet verwerken. In tegenstelling tot traditionele foutbehandeling, kunnen uitzonderingen de foutbehandelingscode scheiden van de gewone code.