Hoe de afhandeling van uitzonderingen in C ++ te implementeren?



Dit artikel zal u helpen begrijpen wat het afhandelen van uitzonderingen is en hoe u het afhandelen van uitzonderingen in C ++ implementeert met praktische demonstratie.

Uitzonderingen zijn abnormale omstandigheden tijdens runtime of compilatietijd. is een zeer essentieel concept in c ++. Dit artikel zal u kennis laten maken met het afhandelen van uitzonderingen in C ++, samen met de verschillende typen.

De volgende tips komen in dit artikel aan bod:





Dus laten we beginnen,

Afhandeling van uitzonderingen in C ++

Soorten uitzonderingen

Er zijn twee soorten uitzonderingen,



Uitzondering looptijd

Het is een uitzondering die tijdens runtime wordt opgemerkt.

Uitzondering tijdens compileren



Het is een uitzondering die tijdens het compileren wordt opgemerkt.

Verdergaan met dit artikel over het afhandelen van uitzonderingen in C ++,

Wat is het afhandelen van uitzonderingen?

Fouten verstoren de normale uitvoering van een programma. Afhandeling van uitzonderingen is zeer noodzakelijk, en het is het afhandelen van fouten of uitzonderingen. Het zorgt ervoor dat de uitvoering van het programma niet wordt beïnvloed door de uitzonderingen en verwerkt ze langzaam zonder problemen te veroorzaken bij de uitvoering van het programma.

Als u de afhandeling van uitzonderingen overweegt, zijn er drie termen aan verbonden:

Proberen

De code in dit blok is als een proefcode, die een uitzondering kan genereren. Deze uitzondering zit in het catch-blok.

Vangst

De code in dit blok wordt uitgevoerd wanneer de code in de try-blokken een uitzondering genereert.

Gooi

Dit sleutelwoord wordt gebruikt om een ​​uitzondering te genereren wanneer deze wordt aangetroffen. De uitzondering wordt naar de uitzonderingshandler gestuurd.

Syntaxis:

De code in het try-blok wordt uitgevoerd. Als er een fout wordt gegenereerd, gooit het trefwoord throw de uitzondering naar de exception handler, dat wil zeggen het catch-blok. Het catch-blok voerde vervolgens de code uit, die zich in zijn blok bevindt, en behandelde dus de uitzondering.

Laten we eens kijken naar voorbeeldcode voor het afhandelen van uitzonderingen in c ++

Voorbeeldcode

#include using namespace std try {// code for try throw & ldquoexception & rdquo} catch (exception) {// code for catch} int main () {int x = 1 try {cout<< 'Try Block: '<

Uitgang:

Uitvoer - Afhandeling van uitzonderingen in C ++ - Edureka

Uitleg

Dit programma demonstreert het afhandelen van uitzonderingen. We hebben een variabele x, die de waarde 1 krijgt. Dan hebben we het begin van het try-blok. In dit blok hebben we een if-statement met de voorwaarde x<10.

In ons geval is de voorwaarde waar, aangezien x één is. Het programma gooit dan een uitzondering en de besturing verschuift naar blok vangen. We voeren de conditie uit in het catch-gedeelte en verlaten het blok.

vangst (...) {kosten<< 'Default Exceptionn'<

Als laatste voeren we de resterende instructies uit na het catch-blok en het exitprogramma.

gekoppelde lijst implementatie in c

Er kunnen meerdere catch-statements zijn, afhankelijk van het aantal mogelijke uitzonderingen.

Verdergaan met dit artikel over het afhandelen van uitzonderingen in C ++,

Catch Block Failure

Beschouw het vorige programma, als in plaats van x het throw-trefwoord 'ABC' gooit, kan de catch-functie het niet aan. Het zal een fout weergeven,

We kunnen in dat geval onze gewonnen foutmelding krijgen.

Om dit op te lossen, moeten we een standaard catch-functie aan de code toevoegen om dergelijke problemen op te lossen.

#include using namespace std int main () {int x = 1 try {cout<< 'Try Block: '<

Uitvoer:

Uitleg:

Deze code is vergelijkbaar met de vorige. De enige verandering is dat de gegenereerde uitzondering van het type char is. Dit heeft tot gevolg dat onze vangfunctie nutteloos is. Daarom hebben we een standaard catch-functie toegevoegd.

Als geen van de catch-instructies overeenkomt, wordt de standaard catch uitgevoerd.

Meerdere vangblokken

Er kunnen meerdere catch-blokken van een enkel try-blok zijn.

Hier is een voorbeeld,

#include using namespace std int test (int a) {try {if (a<0) throw a else throw 'a' }catch(int a){ cout<<'Caught an integer: ' << a<

Uitgang:

Uitleg:

In de bovenstaande code gebruiken we meerdere catch-statements. We hebben een functietest die een uitzondering genereert. In het eerste testgeval is de waarde 10. Aangezien 10 groter is dan nul, wordt ‘a’ het karakter gegooid en opgevangen door de tweede catch-functie.

In het tweede geval is de waarde kleiner dan 0, dus wordt de waarde -1 gegenereerd en wordt deze opgevangen door een uitzondering voor gehele getallen

Afhandeling van uitzonderingen in de basisklasse en afgeleide klasse:

Als de uitzonderingen van de basisklasse en de afgeleide klasse worden opgevangen, moet de vangst van de afgeleide klasse worden uitgevoerd vóór de basisklasse.

Hier zijn enkele uitzonderingen:

  • std :: uitzondering

  • logic_error

  • runtime_error

  • bad_alloc

  • bad_cast

  • bad_exception

Hiermee komen we aan het einde van deze blog over ‘Exception Handling In C ++’. Ik hoop dat je dit informatief en nuttig vond, blijf op de hoogte voor meer tutorials over vergelijkbare onderwerpen. Je kunt ook ons ​​trainingsprogramma bekijken.o diepgaande kennis opdoen over jQuery samen met zijn verschillende toepassingen, dat kan voor live online training met 24/7 ondersteuning en levenslange toegang.

Heeft u een vraag voor ons? Noem ze in het commentaargedeelte van deze blog en we nemen zo snel mogelijk contact met je op.