C++ Uitsonderings
C++ Uitsonderings
Wanneer C++-kode uitgevoer word, kan verskillende foute voorkom: koderingsfoute wat deur die programmeerder gemaak is, foute as gevolg van verkeerde invoer, of ander onvoorsienbare dinge.
Wanneer 'n fout voorkom, sal C++ normaalweg stop en 'n foutboodskap genereer. Die tegniese term hiervoor is: C++ sal 'n uitsondering gooi (gooi 'n fout).
C++ probeer vang
Uitsonderingshantering in C++ bestaan uit drie sleutelwoorde: try
, throw
en catch
:
Die try
stelling laat jou toe om 'n blok kode te definieer wat vir foute getoets moet word terwyl dit uitgevoer word.
Die throw
sleutelwoord gooi 'n uitsondering wanneer 'n probleem bespeur word, wat ons 'n pasgemaakte fout laat skep.
Die catch
stelling laat jou toe om 'n blok kode te definieer wat uitgevoer moet word, as 'n fout in die probeerblok voorkom.
Die try
en catch
sleutelwoorde kom in pare:
Voorbeeld
try {
// Block of code to try
throw exception;
// Throw an exception when a problem arise
}
catch () {
// Block of code to handle errors
}
Oorweeg die volgende voorbeeld:
Voorbeeld
try {
int age = 15;
if (age >= 18) {
cout << "Access granted - you are old enough.";
} else {
throw (age);
}
}
catch (int
myNum) {
cout << "Access denied - You must be at least 18 years
old.\n";
cout << "Age is: " << myNum;
}
Voorbeeld verduidelik
Ons gebruik die try
blok om 'n paar kode te toets: As die age
veranderlike minder as 18
, sal ons throw
'n uitsondering, en hanteer dit in ons catch
blok.
In die catch
blok vang ons die fout op en doen iets daaraan. Die catch
stelling neem 'n parameter : in ons voorbeeld gebruik ons 'n int
veranderlike ( myNum
) (omdat ons 'n uitsondering van int
tipe in die try
blok ( age
) gooi), om die waarde van uit te voer age
.
As geen fout voorkom nie (bv. as age
is 20
in plaas van 15
, wat beteken dat dit groter as 18 sal wees), word die catch
blok oorgeslaan:
Voorbeeld
int age = 20;
Jy kan ook die throw
sleutelwoord gebruik om 'n verwysingsnommer uit te voer, soos 'n pasgemaakte foutnommer/kode vir organiseringsdoeleindes:
Voorbeeld
try {
int age = 15;
if (age >= 18) {
cout << "Access granted - you are old enough.";
} else {
throw 505;
}
}
catch (int myNum) {
cout << "Access denied - You must be at least 18 years old.\n";
cout << "Error number: " << myNum;
}
Hanteer enige tipe uitsonderings (...)
As jy nie die throw
tipe wat in die try
blok gebruik word ken nie, kan jy die "drie kolletjies" sintaksis ( ...
) binne die catch
blok gebruik, wat enige tipe uitsondering sal hanteer:
Voorbeeld
try {
int age = 15;
if (age >= 18) {
cout << "Access granted - you are old enough.";
} else {
throw 505;
}
}
catch (...) {
cout << "Access denied - You must be at least 18 years
old.\n";
}