fork download
  1. #include <iostream>
  2. #include <stdlib.h>
  3.  
  4. using namespace std;
  5.  
  6. #define MAXERR 10
  7. class MaxError {};
  8.  
  9. class Error{
  10. public:
  11. Error();
  12. void Say();
  13. private:
  14. static int count;
  15. };
  16.  
  17. void Run() throw(Error);
  18. void trapper();
  19. void zapper();
  20.  
  21. int Error::count;
  22.  
  23. int main()
  24. {
  25. set_unexpected(trapper);
  26. set_terminate(zapper);
  27. for(;;)
  28. {
  29. try{ Run(); }
  30. catch(Error e){ e.Say(); }
  31. }
  32. }
  33.  
  34. void Run() throw(Error)
  35. {
  36. //throw Error();
  37. throw "Невідомий тип об'єкта";
  38. }
  39.  
  40. void trapper()
  41. {
  42. cout << "Обробник непередбачених ситуаций." << endl;
  43. throw Error();
  44. }
  45.  
  46. void zapper()
  47. {
  48. cout << "Обробник завершення функції" << endl;
  49. exit(-1);
  50. }
  51.  
  52. Error::Error()
  53. {
  54. count++;
  55. if (count > MAXERR)
  56. throw MaxError();
  57. }
  58.  
  59. void Error::Say()
  60. {
  61. cout << count << endl;
  62. }
Runtime error #stdin #stdout 0s 3432KB
stdin
Standard input is empty
stdout
Обробник непередбачених ситуаций.
1
Обробник непередбачених ситуаций.
2
Обробник непередбачених ситуаций.
3
Обробник непередбачених ситуаций.
4
Обробник непередбачених ситуаций.
5
Обробник непередбачених ситуаций.
6
Обробник непередбачених ситуаций.
7
Обробник непередбачених ситуаций.
8
Обробник непередбачених ситуаций.
9
Обробник непередбачених ситуаций.
10
Обробник непередбачених ситуаций.
Обробник завершення функції