А приложение завершается в другом месте, вне конструкции try catch, ведь так?
Возможно из-за того, что var так и не был введен.
Имеет смысл погрузить конструкцию в цикл, например:
int var = 0;
do
{
try
{
cin >> var;
}
catch(std::exception& e)
{
cout << "Ошибка ввода!";
}
} while (var == 0);