MyTetra Share
Делитесь знаниями!
Обработка исключения try, catch, throw
Время создания: 13.06.2020 20:13
Раздел: C++ - Примеры кода - Работа на уроке
Запись: Shut913/Tetra-notes-Programming/master/base/1592068439dk93urz411/text.html на raw.githubusercontent.com

#include <iostream>


// == Постановка проблемы

//int find(const char* str, char ch, std::string& info)

//{

// for (int i{}; i < strlen(str); ++i)

// if (str[i] == ch)

// return i;

//

// return -1;

//}


// Генерация исключения throw

//throw -1;

//throw "Error"

//throw ENUM_OPEN_FILE_FAILED

//throw d;

//throw MyException("Error.....")


// Поиск исключения (мониторинг) try{}

//try {

// // ..

// throw -1;

//}


// Обработка исключения catch(<type> exception) {}

//try

//{

//

//}

//catch (int e)

//{

// //..

// std::cout << "This is "

//}

//catch (const std::string& e)

//{

//

//}

//catch (char)

//{

//

//}


// try throw catch пример

//int main()

//{

// try

// {

// //..

// std::string str = "lskjdf";

// throw str;

// std::cout << "our functionality";

// }

// catch (int e)

// {

// std::cout << "Int exception: " << e << "\n";

// }

// catch (double)

// {

// std::cout << "Double exception: " << "\n";

// }

// catch (const std::string& e)

// {

// std::cout << "String exception: " << e << "\n";

// }

//

// std::cout << "End of main()";

//}


//int main()

//{

// std::cout << "Enter a number: ";

// double a;

// std::cin >> a;

//

// try

// {

// if (a < 0)

// throw "Negative argument";

//

// std::cout << "The sqrt of " << a << " = " << sqrt(a) << "\n";

// }

// catch (const char* e)

// {

// std::cout << "Error: " << e;

// }

//

// std::cout << "End of main()";

//}


// Раскручивание стека

//double mYSqrt(double a)

//{

// if (a < 0)

// throw "Negative argument";

//

// return sqrt(a);

//}

//

//void main()

//{

// std::cout << "Enter a number: ";

// double a;

// std::cin >> a;

//

// try

// {

// double result = mYSqrt(a);

// std::cout << "Result = " << result << "\n";

// }

// catch (const char* e)

// {

// std::cout << "Error: " << e << "\n";

// }

//}


//void four()

//{

// std::cout << "Start four()\n";

// std::cout << "four() throw int exception\n";

// throw "error";

// std::cout << "End of four()\n";

//}

//

//void three()

//{

// std::cout << "Start three()\n";

// four();

// std::cout << "End of three()\n";

//}

//

//void two()

//{

// std::cout << "Start two()\n";

// try

// {

// three();

// }

// catch (double)

// {

// std::cout << "two() caught double exception\n";

// }

// std::cout << "End of two()\n";

//}

//

//void one()

//{

// std::cout << "Start one()\n";

// try

// {

// two();

// }

// catch (int)

// {

// std::cout << "one() caught int exception\n";

// }

// catch (double)

// {

// std::cout << "one() caught double exception\n";

// }

// std::cout << "End of one()\n";

//}

//

//void main()

//{

// std::cout << "Start main()\n";

// try

// {

// one();

// }

// catch (int)

// {

// std::cout << "main() caught int exception\n";

// }

//

// std::cout << "End of main()\n";

//}


// catch-all

//void main()

//{

// try

// {

// throw 4;

// }

// catch (double e)

// {

// std::cout << "double exception\n";

// }

// catch (...) // <--- эллипсис

// {

// // std::cout << "catch-all\n";

// }

//}


// Спецификация исключений void func throw(....) НЕ ИСПОЛЬЗОВАТЬ!!!

// 1. int func() throw() {........} // ф-ция не генерирует исключения

// 2. int func() throw(double) {........} // ф-ция генерирует исключение типа double

// 3. int func() throw(...) {........} // ф-ция генерирует любые исключения


Так же в этом разделе:
 
MyTetra Share v.0.58
Яндекс индекс цитирования