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, throwen catch:

Die trystelling laat jou toe om 'n blok kode te definieer wat vir foute getoets moet word terwyl dit uitgevoer word.

Die throwsleutelwoord gooi 'n uitsondering wanneer 'n probleem bespeur word, wat ons 'n pasgemaakte fout laat skep.

Die catchstelling laat jou toe om 'n blok kode te definieer wat uitgevoer moet word, as 'n fout in die probeerblok voorkom.

Die tryen catchsleutelwoorde 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 tryblok om 'n paar kode te toets: As die ageveranderlike minder as 18, sal ons throw'n uitsondering, en hanteer dit in ons catchblok.

In die catchblok vang ons die fout op en doen iets daaraan. Die catch stelling neem 'n parameter : in ons voorbeeld gebruik ons ​​'n intveranderlike ( myNum) (omdat ons 'n uitsondering van inttipe in die tryblok ( age) gooi), om die waarde van uit te voer age.

As geen fout voorkom nie (bv. as ageis 20in plaas van 15, wat beteken dat dit groter as 18 sal wees), word die catchblok oorgeslaan:

Voorbeeld

int age = 20;

Jy kan ook die throwsleutelwoord 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 tryblok gebruik word ken nie, kan jy die "drie kolletjies" sintaksis ( ...) binne die catchblok 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";
}