Advertisement
Ejejejejejjr

Несколько блоков catch

Dec 31st, 2020
310
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.30 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <fstream>
  4.  
  5.  
  6. int Func(int value)
  7. {
  8.     if (value < 0)
  9.     {
  10.         //выброс исключения классу exception
  11.         throw std::runtime_error/*или logic_error*/("Число меньше нуля!");
  12.     }
  13.    
  14.     //выброс исключения указателю на char
  15.     if(value == 0)
  16.     {
  17.         throw "Число равно нулю";
  18.     }
  19.     //выброс непредвиденного исключения
  20.     if(value == 1)
  21.     {
  22.         throw 1;
  23.     }
  24.    
  25.     std::cout << "Value = " << value << std::endl;
  26. }
  27.  
  28.  
  29. int main(int argc, char *argv[])
  30. {
  31.     setlocale(LC_ALL, "Rus");
  32.     srand(time(NULL));
  33.    
  34.    
  35.     try
  36.     {
  37.         Func(-1);
  38.     }
  39.     catch (/*ссылка на объект класса exception из стандартного пространства имен*/std::exception &ex)
  40.     {
  41.         std::cout << "[1] " << /*получение того,что было выброшено в throw*/ex.what() << std::endl;
  42.     }
  43.     //еще один блок catch, ловящий указатель на char, указанный в throw
  44.     catch(const char* ex)
  45.     {
  46.         std::cout << "[2] " << ex << std::endl;
  47.     }
  48.     //блок catch, ловящий неуказанные исключения
  49.     //лучше ставить в конец
  50.     catch(...)
  51.     {
  52.         std::cout << "[?] Непредвиденная ошибка" << std::endl;
  53.     }
  54.  
  55.     return 0;
  56. }
  57.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement