Форум программистов, компьютерный форум CyberForum.ru

Как кинуть исключение std::locale::global(std::locale(""); - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Закрывается, а не выполняется программа после нажатия enter http://www.cyberforum.ru/cpp-beginners/thread770357.html
Доброй ночки всем. Помогите новичку: после нажатия enter после ввода переменных программа не выполняется, а попросту закрывается. #include <iostream> using namespace std; int main () { int a,b; char op; int res;
C++ Как добавить в вектор приватный объект класса Как добавить в вектор приватный объект класса? К примеру . ... class Class { public: int metod(); // который = b int i; http://www.cyberforum.ru/cpp-beginners/thread770333.html
C++ друг функции
можете объяснить когда и зачем мы делаем функцию другом friend.......
C++ Задача. Сколько времени понадобится экспедиции, чтобы достичь высоты 4200 м?
Сама задача: Экспедиция начинает восхождение на Эверест с высоты 3000 м с начальной скоростью 200 м/ч. Известно, что через каждые 100 м скорость подъема уменьшается на 10% от скорости за предыдущие 100 м. Сколько времени понадобится экспедиции, чтобы достичь высоты 4200 м? Мое решение, но оно не верное вроде как. #include "stdafx.h" #include <iostream> #include <locale> using...
C++ Определить количество столбцов, упорядоченных по возрастанию http://www.cyberforum.ru/cpp-beginners/thread770261.html
задана матрица B(n,m). Определить количество столбцов, упорядоченных по возрастанию. Определить количество нулевых элементов матрицы Будьте внимательны при выборе раздела форума
C++ Разработка и отладка алгоритмов и программ с использованием шаблонов функций Разработать шаблон класса “множество” (реализация через список). Тип элементов множества за- дается как параметр шаблона. Написать тестовую программу.. подробнее

Показать сообщение отдельно
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
28.01.2013, 14:48  [ТС]     Как кинуть исключение std::locale::global(std::locale("");
Цитата Сообщение от Kgfq Посмотреть сообщение
Кстати, насчет исключений, я правильно понимаю, что они выходят "насквозь" через все функции, пока не достигнут отловщика/пока функции не кончатся ?
Будут проходить через все ветки catch и если не смогут быть обработаны, то програма завершиться (кажется аварийно). Я об этом читал, но как реализовать не знал. Я просто считал, что если ошибка не будет обработана то программа завершиться автоматически, а как оказывается нужно ещё в конце поставить что-то типа exit(1);

B вот ещё пытаюсь обработать ошибку таким образом, но компилятор выдаёт предупреждение:
Bash
1
2
3
4
test.cpp:15:7: warning: exception of type ‘std::runtime_error’ will be caught [enabled by default]
test.cpp:12:7: warning:    by earlier handler for ‘std::runtime_error’ [enabled by default]
test.cpp:18:7: warning: exception of type ‘std::runtime_error’ will be caught [enabled by default]
test.cpp:15:7: warning:    by earlier handler for ‘std::runtime_error’ [enabled by default]
Как можно сделать это более, элегантным способом, чтобы компилятор (gcc) не нервничал?
C++
1
2
3
4
5
6
7
8
9
10
11
12
    try {
    std::locale::global(std::locale(""));
    } catch (std::runtime_error bad_locale_error) {
        std::cerr << "Couldn't set global locale: " << bad_locale_error.what() << std::endl;
        std::locale::global(std::locale("en_US.utf8"));
    } catch (std::runtime_error bad_locale_error) {
        std::cerr << "Couldn't set global locale: " << bad_locale_error.what() << std::endl;
        std::locale::global(std::locale("Russian"));
    } catch (std::runtime_error bad_locale_error) {
        std::cerr << "Couldn't set global locale: " << bad_locale_error.what() << std::endl;
        exit(1);
    }
Добавлено через 2 минуты
Пс. Принципе, он жалуется на то, что я всегда использую одно и тоже исключение: std::runtime_error. Как можно этого избежать не теряя смысл в ветке try?

Добавлено через 10 минут
Цитата Сообщение от xtorne21st Посмотреть сообщение
C++
1
try { std::locale::global(std::locale("")); } catch (std::runtime_error bad_locale_error) { std::cerr << "Couldn't set global locale: " << bad_locale_error.what() << std::endl; std::locale::global(std::locale("en_US.utf8")); } catch (std::runtime_error bad_locale_error) { std::cerr << "Couldn't set global locale: " << bad_locale_error.what() << std::endl; std::locale::global(std::locale("Russian")); } catch (std::runtime_error bad_locale_error) { std::cerr << "Couldn't set global locale: " << bad_locale_error.what() << std::endl; exit(1); }
Как оказалось - это вообще ошибочный код. Так как мне сделать, чтобы оно пыталось в теле try автоматически выставить локаль?
 
Текущее время: 21:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru