cin 和 try/catch

发布于 2024-12-17 07:35:08 字数 345 浏览 1 评论 0原文

我有这个简单的 try catch 来抛出 cin 异常,但它从不抛出异常。

while(cin>>num) {
   try {
      if(cin.fail()) {
         throw "error";
      }
      if(num>0) {
        cout << "number greater than 0" << endl;
      }
   }
   catch(char* error) {
      cout << error << endl;
   }
}

为什么它不抛出异常?

I have this simple try catch for throwing cin exceptions, but it never throws exceptions.

while(cin>>num) {
   try {
      if(cin.fail()) {
         throw "error";
      }
      if(num>0) {
        cout << "number greater than 0" << endl;
      }
   }
   catch(char* error) {
      cout << error << endl;
   }
}

Why it is not throwing the exception?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

原来是傀儡 2024-12-24 07:35:08

辛>> num return false,所以你的循环体根本不会被执行。

如果确实需要使用execption,

while(true)
{
    cin >> num;
    try{
       if(cin.fail()){
           throw "error";
       }
       if(num>0){
           cout<<"number greater than 0"<<endl;
       }
   }
   catch( char* error){
      cout<<error<<endl;
          break;
   }
}

最好将try catch放在循环之外以获得更好的性能

cin >> num return false, so your loop body doesn't get executed at all.

If you really need to use execption

while(true)
{
    cin >> num;
    try{
       if(cin.fail()){
           throw "error";
       }
       if(num>0){
           cout<<"number greater than 0"<<endl;
       }
   }
   catch( char* error){
      cout<<error<<endl;
          break;
   }
}

It's better to put the try catch outside of the loop to get better performance

十六岁半 2024-12-24 07:35:08

字符串文字,例如“error”,与 char* 不匹配,它需要是 const char*

String literals, like "error", do not match char*, it needs to be const char*

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文