Advertisement
Guest User

Untitled

a guest
Apr 25th, 2017
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.02 KB | None | 0 0
  1. /*
  2.   Celem zadania jest napisanie klasy StatusCode, ktora wspomaga
  3.   programiste w pracy w systemie gdzie nalezy sprawdzac kody bledow.
  4.   Mianowicie obiekty klasy StatusCode maja dzialc
  5.   w taki sposob:  Podczas konstrukcji pobieraja kod bledu, funkcje
  6.   potwierdzajaca ze kod bledu wskazuje na poprawna wartosc i jakas informacje tekstowa.  
  7.   Jesli na tym obiekcie nigdy nie zostanie wywolana metoda isok() to powinien
  8.   zostac wyrzucaony wyjatek podczas destrukcji tego obiektu.  
  9.   Wyjatek nie powinien sie pojawic jesli metoda isok() zostala wywolana.
  10.   Cala zabawa pojawia sie przy operatorze kopiujacym zwlaszcza gdy jego argument
  11.   jest typu const.
  12.  
  13.  
  14.   Wyjatek wyrzucony powinien sie nazwyac UncheckedStatusCode
  15.   i musi przechowac informacje wczesniej zawarta w obiekcie StatusCode.
  16.  
  17.   Do kompletu nalzey napisac  UncheckedStausHandler obslugujacy taki wyjatek
  18.   i wyjatki standardowe.
  19.  */
  20.  
  21. #include <iostream>
  22. #include "StatusCode.h"
  23.  
  24.  
  25. using namespace std;
  26. int main() {
  27.   try {
  28.     {
  29.       StatusCode sc = StatusCode::ALLOK();  // wywolanie bezproblemowe
  30.       if ( sc.isok() )
  31.       cout << "ok " << endl;
  32.       else
  33.     cout << "not ok " << sc.info() << endl;
  34.     }
  35.     {
  36.       StatusCode sc = StatusCode::ERROR("Blad");
  37.       if ( sc.isok() )
  38.     cout << "ok " << endl;
  39.       else
  40.     cout << "not ok " << sc.info() << endl;
  41.     }
  42.     {
  43.       const StatusCode sc = StatusCode::ALLOK();
  44.       StatusCode sc2  = sc; // tu sc2 przejmuje funkcje sprawdzenia czy byl sprawdzony
  45.       sc2.isok();
  46.       std::cout << "Kod bledu sprawdzony, nie ma wyjatku.\n";
  47.     }
  48.     {
  49.       {
  50.     StatusCode sc = StatusCode::ALLOK();
  51.       }
  52.       std::cout << "Nie sprawdzamy kodu bledu\n";
  53.     }
  54.   } catch (...) {
  55.     UncheckedStausHandler::handle();
  56.   }
  57.  
  58.   try {
  59.     throw std::runtime_error("jakis blad");
  60.   } catch(...) {
  61.     UncheckedStausHandler::handle();
  62.   }    
  63. }
  64. /* wynik
  65. ok
  66. not ok Blad
  67. Kod bledu sprawdzony, nie ma wyjatku.
  68. ..Handling UncheckedStatusCode
  69. ..Handling std::exception jakis blad
  70.  */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement