Wyjątek strumienia

Odpowiedz Nowy wątek
2013-05-31 21:22

Rejestracja: 6 lat temu

Ostatnio: 6 lat temu

0

Witam,
mam problem z obsługą wyjątku strumienia. Gdy wprowadzę inny typ danej niż zadeklarowany, wyjątek ma być obsługiwany. Chciałem to zrealizować tak :

int _tmain(int argc, _TCHAR* argv[])
{
int x;

do{
                try {
                cin >> x;
                if (cin.fail())
                    throw string ("BLAD");
                }
                catch (string errr)
                {
                    cout << errr  << endl;
                    cin.clear();
                    cin.sync();
                }
            } while (cin.fail());
              return 0;
}

ale program nie działa jak powinien. Gdzie jest błąd ?

Pozostało 580 znaków

2013-05-31 21:39
Moderator

Rejestracja: 16 lat temu

Ostatnio: 2 godziny temu

0

Błędem jest sterowanie przepływem za pomocą wyjątków jeśli nie jest to potrzebne. Tutaj nie jest, więc nie powinieneś tego robić. Rzucenie wyjątku jest kosztowną operacją i bez sensu jest rzucanie i łapanie go w tym samym scope. Wyjątek ma sens jeśli faktycznie chcemy przerwać jakąś operację i zwijać stos do jakiegoś miejsca. Tutaj sensu nie ma.


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...
edytowany 1x, ostatnio: Shalom, 2013-05-31 21:39

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0