"Loopt sich endlos", heißt das, das Programm verlässt die while- Schleife nicht?
Welche Fehlermeldung würdest du denn erwarten ?
Um einen möglichen Eingabefehler abzufangen, kannst du die fail() Methode direkt nach dem einlesen verwenden. Das sehe dann in etwa so aus aus:
Code:
if ( cin.fail() ) {
	cout << "Falsche Eingabe :(" << endl;
}
Die fail()- Methode liefert einen boolschen Wert zurück. True, wenn die Eingabe korrekt war, false, wenn sie inkorrekt war.
Dieser Link sieht ganz gut dazu aus:
http://www.cpp-tutor.de/cpp/le04/cin.html