Výjimky C++
Výjimky C++
Při provádění kódu C++ mohou nastat různé chyby: chyby kódování způsobené programátorem, chyby způsobené nesprávným zadáním nebo jiné nepředvídatelné věci.
Když dojde k chybě, C++ se normálně zastaví a vygeneruje chybovou zprávu. Technický termín pro to je: C++ vyvolá výjimku (vyvolá chybu).
C++ zkuste a chytněte
Zpracování výjimek v C++ se skládá ze tří klíčových slov : try
a throw
:catch
Příkaz try
vám umožňuje definovat blok kódu, který má být testován na chyby během jeho provádění.
Klíčové throw
slovo vyvolá výjimku, když je zjištěn problém, což nám umožňuje vytvořit vlastní chybu.
Příkaz catch
vám umožňuje definovat blok kódu, který se má provést, pokud v bloku try dojde k chybě.
Klíčová slova try
a catch
jsou ve dvojicích:
Příklad
try {
// Block of code to try
throw exception;
// Throw an exception when a problem arise
}
catch () {
// Block of code to handle errors
}
Zvažte následující příklad:
Příklad
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;
}
Příklad vysvětlen
Blok používáme try
k testování nějakého kódu: Pokud je age
proměnná menší než 18
, uděláme throw
výjimku a zpracujeme ji v našem catch
bloku.
V catch
bloku zachytíme chybu a něco s tím uděláme. Příkaz catch
má parametr : v našem příkladu používáme int
proměnnou ( ) (protože v bloku ( ) myNum
vyvoláváme výjimku int
typu ) k výstupu hodnoty .try
age
age
Pokud se nevyskytne žádná chyba (např. pokud age
je 20
místo 15
, což znamená, že bude větší než 18), catch
blok je přeskočen:
Příklad
int age = 20;
Klíčové slovo můžete také použít throw
k výstupu referenčního čísla, jako je vlastní číslo/kód chyby pro účely organizace:
Příklad
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;
}
Zpracovat jakýkoli typ výjimek (...)
Pokud neznáte throw
typ použitý v try
bloku, můžete použít syntaxi „tři tečky“ ( ...
) uvnitř catch
bloku, která zvládne jakýkoli typ výjimky:
Příklad
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";
}