Wyjątek strumienia

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 ?

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.

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