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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.77
NeonLost
Пес войны
74 / 85 / 3
Регистрация: 23.02.2012
Сообщений: 653
#1

try, throw, catch...обработка исключений - C++

19.04.2012, 17:16. Просмотров 1696. Ответов 9
Метки нет (Все метки)

помогите разобраться с обработкой исключений...при вводе пароля больше 10 символов должна быть непредвиденная ошибка, пытаюсь ее поймать,но у меня ничего не получается...переменная flag всегда true...почему?..

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void main()
{
bool flag=false;    
char pass[10];
char passw[]="2296";
setlocale( LC_ALL,"Russian" );
 
do   {  try{    
    cout << "Введите пароль: ";
    
    cin.getline(pass, sizeof(pass)); throw 1;
}
    catch(int)
    { flag=true; break;}
    system("cls");
  }  while (strcmp(pass,passw)!=0) ;
 
if (flag==true) {cerr<<"ошибка ввода";}
if (flag==false) {read();}
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.04.2012, 17:16     try, throw, catch...обработка исключений
Посмотрите здесь:

Обработка любых исключений в try catch на C++ также как на C# - C++
Есть ли возможность обрабатывать все ошибки в программе на C++, точно также как это сделано на C#? На C# просто помещаешь текст...

try, catch, throw - C++
пишу класс namespace mystd { const uint32_t def_size = 1 &lt;&lt; 20; //default memory container template&lt;typename T&gt; ...

Try, catch, throw - C++
Подскажите, как с помощью try, catch, throw, обработать исключение на вводимый тип данных? Например, допускается только тип int, что...

try-throw-catch - C++
#include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; class Drob { public: int obchuslennia (int a, int...

throw, try, catch - C++
Пожалуйста, помогите разобраться в том, что это такое, и как его правильно использовать. Где можно об этом почитать? P.S. только начал...

Try..catch..Throw - C++
Объясните пожалуйста разницу. Желательно с примерами, например деление на ноль, ну или чтобы было сразу несколько исключений. Расскажите...

Try Throw Catch пример - C++
Как-то не особо много инфы нарыл по данной теме... Может у кого есть какие уже реализованные примеры?

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
NoMasters
Псевдослучайный
1747 / 1090 / 71
Регистрация: 13.09.2011
Сообщений: 3,121
19.04.2012, 17:21     try, throw, catch...обработка исключений #2
Цитата Сообщение от NeonLost Посмотреть сообщение
переменная flag всегда true...почему?..
Потому, что всегда вызывается throw.
NeonLost
Пес войны
74 / 85 / 3
Регистрация: 23.02.2012
Сообщений: 653
19.04.2012, 17:43  [ТС]     try, throw, catch...обработка исключений #3
throw вызывается, а catch зачем вызывается если ошибки не было?
и как исправить?..)
NoMasters
Псевдослучайный
1747 / 1090 / 71
Регистрация: 13.09.2011
Сообщений: 3,121
19.04.2012, 17:46     try, throw, catch...обработка исключений #4
Было исключение же.
Цитата Сообщение от NeonLost Посмотреть сообщение
и как исправить?..)
Не вызывать throw без повода.
rangerx
1932 / 1541 / 141
Регистрация: 31.05.2009
Сообщений: 2,911
19.04.2012, 17:48     try, throw, catch...обработка исключений #5
http://www.cplusplus.com/reference/i...os/exceptions/
NeonLost
Пес войны
74 / 85 / 3
Регистрация: 23.02.2012
Сообщений: 653
19.04.2012, 17:53  [ТС]     try, throw, catch...обработка исключений #6
Цитата Сообщение от NoMasters Посмотреть сообщение
Было исключение же.

Не вызывать throw без повода.

если убрать throw, то никогда не выполниться catch...а мне нужно что бы он вызывался, когда ввели больше 10 символов...
NoMasters
Псевдослучайный
1747 / 1090 / 71
Регистрация: 13.09.2011
Сообщений: 3,121
19.04.2012, 17:58     try, throw, catch...обработка исключений #7
getline
If the function stops reading because this size is reached, the failbit internal flag is set.
easybudda
Эксперт CЭксперт С++
9470 / 5483 / 927
Регистрация: 25.07.2009
Сообщений: 10,505
19.04.2012, 18:44     try, throw, catch...обработка исключений #8
Цитата Сообщение от NeonLost Посмотреть сообщение
а мне нужно что бы он вызывался, когда ввели больше 10 символов...
Вот так вызывается:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
#include <cstring>
#include <limits>
 
int main(){
    const int PASSWORD_LENGTH(10);
    const char * CORRECT_PASSWORD("2296");
    
    char buf[PASSWORD_LENGTH];
    
    std::cin.exceptions(std::istream::failbit | std::istream::badbit);
    
    do {
        try {
            std::cout << "Password: ";
            std::cin.getline(buf, PASSWORD_LENGTH);
        }
        catch ( std::istream::failure e ) {
            std::cerr << "Error (password may be too long)!" << std::endl;
            std::cin.clear();
            std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
        }
    } while ( strcmp(buf, CORRECT_PASSWORD) && std::cout << "Wrong password, try another...\n" );
    
    std::cout << "Some secret things" << std::endl;
    
    return 0;
}
try, throw, catch...обработка исключений
NeonLost
Пес войны
74 / 85 / 3
Регистрация: 23.02.2012
Сообщений: 653
19.04.2012, 19:25  [ТС]     try, throw, catch...обработка исключений #9
Цитата Сообщение от easybudda Посмотреть сообщение
Вот так вызывается:
C++
1
                   cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
Вложение 144407
спасибо, все работает, объясните , если не трудно, эту строку)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.04.2012, 19:36     try, throw, catch...обработка исключений
Еще ссылки по теме:

Try,catch,throw,OVERFLOW! - C++
Добрый вечер! И СНОВА с вами try..catch...:p Я очень долго пытался понять try-catch сам, читал везде, где только можно(ссылки давать...

Try throw catch в решении уравнения - C++
Есть уравнение y=1/sqrt(x-3). нужно считать x, пусть он будет целым. а затем с помощью исключений обработать ошибки: 1) ввели...

C++ try catch throw в разных функциях - C++
try и catch находятся в одной функции а throw вызывается из другой. ну MVS выкидывает исключение вместо передачи управления. что делать?...

try catch throw для чего нужны? - C++
Для чего нужны эти операторы? Линканите пожалуйста статью, где доходчиво объяснено их применение, в разных вариантах (например я видел...

Try - catch - throw для чего они - C++
Есть код программы принимающей температуру и заводит в вектор, она еще не доработана, Страуструп пишет что защиту от ошибок можно сделать с...


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

Или воспользуйтесь поиском по форуму:
easybudda
Эксперт CЭксперт С++
9470 / 5483 / 927
Регистрация: 25.07.2009
Сообщений: 10,505
19.04.2012, 19:36     try, throw, catch...обработка исключений #10
Цитата Сообщение от NeonLost Посмотреть сообщение
объясните , если не трудно, эту строку
Если ввести строку длиннее, чем помещается в выделенный буфер, остаток строки остаётся в буфере ввода, и нужно его оттуда как-то вычистить. Вот собственно это и происходит. Тут подробнее: http://www.cplusplus.com/reference/i...stream/ignore/
Yandex
Объявления
19.04.2012, 19:36     try, throw, catch...обработка исключений
Ответ Создать тему
Опции темы

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