Viděli jste už v nějakém kódu sekci try/catch?
RAW CODE |
try { // Kód kde může nastat fatální chyba } catch( /* hotnota která se zachytává při chybě */ ) { // Když nastane fatální chyba, provede se tento kód (může se využít zachytávaná hodnota k určení chyby) } |
Exception je něco, co se zachytává pomocí catch().
STD má vlastní exception. Využívá se v kritických bodech, například při manipulaci s řetězci.
Příklad:
RAW CODE |
#include <iostream> #include <string>
int main() { std::string strInput = "123456789abcdefgh"; try { std::string strTemp(input, input.size()*2, input.size()*2); std::cout << strTemp; } catch(std::exception &exc) { std::cout << exc.what() << std::endl; } std::cout << "Program pokracuje." << std::endl; return 0; } |
V příkladu dojde k chybě, protože
string se bude pokoušet inicializovat
strTemp s neplatnou pozicí i velikostí
stringu
strInput. Bez
exception by došlo k selhání programu a nemohl by pokračovat dále.