Бросить исключение, когда неправильный тип введен в -- c++ поле с участием exception-handling пол Связанный проблема

Throw Exception when a wrong type is keyed in


-1
vote

проблема

русский

Я должен написать программу C ++, в которой функция состоит в том, чтобы прочитать два номера double Тип чисел из клавиатуры и добавить <код> try BLOCK, чтобы выбрасывать исключение, когда неправильный тип введен в ключ. Я использовал 9988777662 функцию, но она не работала.

Вот что я пробовал до сих пор, но он не будет бросать исключение, если я ввожу двойное значение.

 <код> #include<iostream> #include<conio.h> using namespace std;   int main()  {      double j;     try{         cin>>j;         if (cin.fail())             throw (j);         else             cout << "Double Value " << j << endl;       }     catch(double a)     {         cout<<"Incompatible Datatype for value"<<a;     }  }   
Английский оригинал

I have to write a C++ program in which a function is to read two double type numbers from keyboard and add a try block to throw an exception when a wrong type is keyed in. I have used cin.fail() function but it did not work.

Here's what I have tried so far, but it will not throw exception if I'm entering double value.

#include<iostream> #include<conio.h> using namespace std;   int main()  {      double j;     try{         cin>>j;         if (cin.fail())             throw (j);         else             cout << "Double Value " << j << endl;       }     catch(double a)     {         cout<<"Incompatible Datatype for value"<<a;     }  } 
</div
     
       
       

Список ответов

0
 
vote

Как насчет ловить строку и обработку исключений? Ниже приведена общая идея:

 <код> string d;      try{         cin >> d;         if ( d.find_first_not_of("0123456789-+.") != string::npos)         {             throw std::runtime_error("not an int");         }         else if ( ( strtod( d.c_str(),nullptr ) > INT_MAX ) || ( strtod( d.c_str(),nullptr ) < INT_MIN ) )         {             throw std::runtime_error(" int overflow");         }      }     catch(const std::exception&d)     {         cout << d.what() << endl;     }   
 

What about catching a string and handling exceptions? Below is the the general idea:

string d;      try{         cin >> d;         if ( d.find_first_not_of("0123456789-+.") != string::npos)         {             throw std::runtime_error("not an int");         }         else if ( ( strtod( d.c_str(),nullptr ) > INT_MAX ) || ( strtod( d.c_str(),nullptr ) < INT_MIN ) )         {             throw std::runtime_error(" int overflow");         }      }     catch(const std::exception&d)     {         cout << d.what() << endl;     } 
</div
 
 

Связанный проблема

5  Что такое "для (x: y)"?  ( What is for x y ) 
Итак, я оглянулся на межпубки о нитках, и я пришел в блог / учебную вещь о нитках, но то, что меня смущено, была эта линия, которую он использовал <код> for...

0  Как настроить VS2008 для эффективного развития C ++  ( How to setup vs2008 for efficient c development ) 
Обычно I Программируйте в C #, но были вынуждены выполнять работу в C ++. Похоже, что интеграция с Visual Studio (2008) действительно плохо по сравнению с C #...

2  Новый DataType, который может иметь количество до 100 цифр  ( New datatype which can have numbers upto 100 digits ) 
Примечание. Это был вопрос интервью и может не иметь фактического случая использования в настоящее время Вопрос должен был разработать класс, который может ...

0  Правильный способ использования вариационного шаблона функции вызова со строковыми аргументами C ++  ( Proper way of using variadic template function call with string arguments c ) 
Здравствуйте, что не то, что я здесь делаю, используя вариадические шаблоны через строку? Как правильно использовать его для достижения заданий ниже? <код> ...

0  Ошибка: аргумент типа "void (opca_hello ::) ()" не соответствует "void * (*) (void *)"  ( Error argument of type void opca hello does not match void void ) 
Я написал очень простой код для резьбы. Поскольку я очень новый для этого, я понятия не имею об ошибке. <код> class opca_hello { public: void hello(); } v...

0  Libusb_Bulk_Transfer добавляет CRC?  ( Does libusb bulk transfer add crc ) 
Я пишу программу пользовательского интерфейса для устройства USB в C ++, используя Visual Studio 2019. Я использую библиотеку Libusb. Я хочу сделать объемную ...

1  Не можете получить программу Math C ++ для работы [дубликата]  ( Cant get math c program to work ) 
<в сторону CLASS = "S-NEWACTS S-WELTIVE__info JS-Post-New Imide MB16« Роль = «Статус»> Этот вопрос уже есть ответы здесь : ...

501  Как использовать постоянную PI в C ++  ( How to use the pi constant in c ) 
Я хочу использовать постоянные и тригонометрические функции PI в некоторой программе C ++. Я получаю тригонометрические функции с помощью <код> include <math....

57  Как сделать макрос C ++ вести себя как функция?  ( How do i make a c macro behave like a function ) 
Допустим, по какой-то причине вам нужно написать макрос: <код> MACRO(X,Y) . (давайте предположим, что есть веская причина, по которой вы не можете использова...

1  C ++ - утечка памяти, вызванная использованием размещения New Over * этот указатель?  ( C memory leak caused by using placement new over this pointer ) 
Как известно, размещение New просто строит объект без выделения любой памяти. Также все члены в классе <Код> 5.5.10 являются объектами вместо указателей, хот...

1  Почему 64-битное целое расширение C ++ называется «долгим долгом»?  ( Why is the 64bit integer extension of c called long long ) 
В отличие от других типов: «int», "логический", "двойной" и т. Д. И даже таможенные классы, есть только одно слово. Однако только одно слово для их типа тольк...

0  Как получить несколько наборов результатов с Poco :: Data?  ( How to fetch multiple result sets with pocodata ) 
Я прочитал Poco :: Руководство пользователя данных и упоминается, что Библиотека имеет поддержку нескольких наборов результатов. Существует пример для этой ...

0  Проблема дизайна - создание шрифта Global (C ++, Marmalade)  ( Design issue making a font global c marmalade ) 
У меня есть проект Marmalade C ++, где встроенный в шрифте не масштабируется на экран. Чтобы справиться с этим вопросом, я делаю пользовательский шрифт, котор...

0  Использование аргументов Makefile без Foo =  ( Using makefile arguments without foo ) 
У меня есть makefile, который я использую для компиляции одного файла. Когда мне нужно пройти аргумент, я использую цель = TargetFile. Сценарий принимает ар...

-1  Неожиданный идентификатор ошибки - не уверен, почему (C ++)  ( Unexpected error id not sure why c ) 
IM Реализация программы C ++, по соображениям проекта оно должно быть включено в один файл, поэтому я не могу поставить то, что вы обычно в отдельном файле за...

Связанный проблема

5  Что такое "для (x: y)"? 
0  Как настроить VS2008 для эффективного развития C ++ 
2  Новый DataType, который может иметь количество до 100 цифр 
0  Правильный способ использования вариационного шаблона функции вызова со строковыми аргументами C ++ 
0  Ошибка: аргумент типа "void (opca_hello ::) ()" не соответствует "void * (*) (void *)" 
0  Libusb_Bulk_Transfer добавляет CRC? 
1  Не можете получить программу Math C ++ для работы [дубликата] 
501  Как использовать постоянную PI в C ++ 
57  Как сделать макрос C ++ вести себя как функция? 
1  C ++ - утечка памяти, вызванная использованием размещения New Over * этот указатель? 
1  Почему 64-битное целое расширение C ++ называется «долгим долгом»? 
0  Как получить несколько наборов результатов с Poco :: Data? 
0  Проблема дизайна - создание шрифта Global (C ++, Marmalade) 
0  Использование аргументов Makefile без Foo = 
-1  Неожиданный идентификатор ошибки - не уверен, почему (C ++) 



© 2021 www.qaru.top All Rights Reserved. Q&A House все права защищены


Licensed under cc by-sa 3.0 with attribution required.