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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
xtorne21st
интересующийся
304 / 275 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
#1

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

24.01.2013, 02:08. Просмотров 1051. Ответов 15
Метки нет (Все метки)

Добрый день.
Знаю, что на С можно так:
C
1
2
3
4
if (!setlocale(LC_ALL, "")) {
    perror("Couldn't set locale");
    exit(EXIT_FAILURE);
}
как сделать проверку на С++ используя std::locale::global(std::locale("")); ?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.01.2013, 02:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как кинуть исключение std::locale::global(std::locale(""); (C++):

Объясните, что означает wcout.imbue( locale( "rus_rus.866" ) ); и wcin.imbue( locale( "rus_rus.866" ) ); ? - C++
Непонятно особенно locale( "rus_rus.866" ).

Получить текущий locale. (category, * locale) - C++
Привет! Если стоит: setlocale (LC_ALL, "Ukrainian"); как я могу теперь получить его аргументы? То-есть, int category и const char *...

отсутствует оператор "<<" соответствующий этим операндам (std::ostream << const std::string) - C++
В 20 строке подсвечиваются красным знаки &lt;&lt;. Пишет, что &quot;отсутствует оператор &quot;&lt;&lt;&quot; соответствующий этим операндам (std::ostream &lt;&lt; const...

"range-base for" и проверка на последний элемент в std::set<std::string> - C++
Добрый день. Голова совсем не варит. Как мне организовать простую проверку на послений элемент без введения счетчика а просто сравнивая...

Ошибка: отсутствует оператор ">>"; типы операндов: std::istream >> std::string - C++
Привет всем! Кто-нибудь объясните пожалуйста, что не так, что от меня компилятор требует?

Ошибка "non-static data member initializers only available with -std=c++11 or -std=gnu++11" - C++
Компилирую вот этот код: #include &lt;algorithm&gt; #include &lt;iostream&gt; #include &lt;set&gt; #include &lt;vector&gt; ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
lemegeton
2924 / 1353 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
24.01.2013, 09:13 #2
Конструктор класса std::locale, принимающий имя локали, генерируют исключение std::runtime_error, если не обнаруживают локали на системе.
1
xtorne21st
интересующийся
304 / 275 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
24.01.2013, 18:50  [ТС] #3
Покажите пожалуйста, как перехватить это исключение
0
lemegeton
2924 / 1353 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
24.01.2013, 19:24 #4
C++
1
2
3
4
5
try {
  std::locale::global(std::locale(""));
} catch (std::runtime_error e) {
  std::cout << "Could not set global locale: " << e.what() << std::endl
}
1
xtorne21st
интересующийся
304 / 275 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
24.01.2013, 20:56  [ТС] #5
А подскажите throw тогда в каких случаях нужно применять?
0
MrGluck
Модератор
Эксперт CЭксперт С++
7239 / 4407 / 642
Регистрация: 29.11.2010
Сообщений: 11,929
24.01.2013, 21:27 #6
xtorne21st, когда исключение не генерируется автоматически.
1
xtorne21st
интересующийся
304 / 275 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
24.01.2013, 21:55  [ТС] #7
Цитата Сообщение от MrGluck Посмотреть сообщение
xtorne21st, когда исключение не генерируется автоматически.
А как узнать когда оно автоматически генерируется, а когда нет?
0
MrGluck
Модератор
Эксперт CЭксперт С++
7239 / 4407 / 642
Регистрация: 29.11.2010
Сообщений: 11,929
24.01.2013, 22:03 #8
xtorne21st, читать спецификацию класса
0
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
24.01.2013, 22:14 #9
Цитата Сообщение от xtorne21st Посмотреть сообщение
Как кинуть исключение std::locale::global(std::locale("");
Что за исключение такое?
0
xtorne21st
интересующийся
304 / 275 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
27.01.2013, 22:50  [ТС] #10
Цитата Сообщение от lemegeton Посмотреть сообщение
try { std::locale::global(std::locale("")); } catch (std::runtime_error e) { std::cout << "Could not set global locale: " << e.what() << std::endl }
А в конце ветки catch нужно ли использовать return -1 или программа сама завершит своё выполнение?

Добавлено через 1 час 38 минут
Ну типа аварийный выход?
0
lemegeton
2924 / 1353 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
28.01.2013, 01:21 #11
Цитата Сообщение от xtorne21st Посмотреть сообщение
А в конце ветки catch нужно ли использовать return -1 или программа сама завершит своё выполнение?
Логика уже на ваше усмотрение. Мне кажется, что ошибка восстановима и работу программы можно продолжить, но я не пробовал.
1
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
28.01.2013, 12:40 #12
Цитата Сообщение от xtorne21st Посмотреть сообщение
А в конце ветки catch нужно ли использовать return -1 или программа сама завершит своё выполнение?
Нет. Не завершит. Мы для этого и перехватываем исключение. Если хотите аварийное завершение, то пробросте его дальше.
1
Kgfq
74 / 37 / 2
Регистрация: 23.09.2012
Сообщений: 408
28.01.2013, 13:48 #13
xtorne21st, исключение - это для программиста. Если хотите выйти, то выходите ручками
1
xtorne21st
интересующийся
304 / 275 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
28.01.2013, 14:11  [ТС] #14
Цитата Сообщение от go Посмотреть сообщение
Нет. Не завершит. Мы для этого и перехватываем исключение. Если хотите аварийное завершение, то пробросте его дальше.
Я просто читал, что вроде есть исключения, которые завршают выполнение программы: толи после всех веток catch, толи ещё какие-то случай - точно не знаю...

Добавлено через 58 секунд
Если вы помните, то дайте, пожалуйста, пример.
0
Kgfq
74 / 37 / 2
Регистрация: 23.09.2012
Сообщений: 408
28.01.2013, 14:15 #15
xtorne21st, так если ты его поймал, то дальше оно не пойдет. И если ты в отловщике не напишешь выйти, то с чего он должен было бы выйти?

Добавлено через 29 секунд
Кстати, насчет исключений, я правильно понимаю, что они выходят "насквозь" через все функции, пока не достигнут отловщика/пока функции не кончатся ?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.01.2013, 14:15
Привет! Вот еще темы с ответами:

Необработанное исключение в "0x76fd2eec" Microsoft C++: std::bad_alloc - C++
Вот такая ошибка в VS2008, тогда как в 2013 все работает без проблем. Если есть у кого возможность попробуйте запустить код в NetBeans'е....

Error C2664: Client::First: невозможно преобразовать параметр 1 из "std::queue<_Ty>" в "std::queue<_Ty> &" - C++
barbershop.h: #ifndef __BARBERSHOP_H__ #define __BARBERSHOP_H__ #include &lt;vector&gt; #include &lt;queue&gt; #include &quot;wantshaircut.h&quot; ...

IntelliSense: отсутствует оператор "<<", соответствующий этим операндам типы операндов: std::basic_ostream<char, std::char_traits<char> - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; struct Stydent { std::string faculty; int rate; ...

std::endl; и std::cout"/n"; - одно и то же? - C++
Весь вопрос в теме.... std::endl; и std::cout&lt;&lt;&quot;/n&quot;; - одно и то же?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
28.01.2013, 14:15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru