【问题标题】:Simple Exception Not Running In C++未在 C++ 中运行的简单异常
【发布时间】:2013-11-11 04:55:20
【问题描述】:

在我的主要功能中我已经编码:

    try {
    empty.addItem( );
    throw  50;
} catch(int x ) {
    cout<<"fail "<<x;
}

但是当我运行程序时,没有输出fail 50。我的错误是什么,以及如何正确使用异常?

【问题讨论】:

  • 啊,我想通了。 main 前面的错误函数语法没有被捕获,缺少一个“}”。

标签: c++ exception


【解决方案1】:

它可以在下面的linux测试程序中运行。

#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
    try {
        throw 50;
    } catch(int x ) {
        cout << "fail " << x << endl;
    }
    return 0;
}

$ g++ throw.cpp 
$ ./a.out
fail 50

你确定这段代码正在你的程序中执行吗?

【讨论】:

  • 你的块工作得很好,empty.addItem() 可以把它扔掉吗?没有双关语。
  • 这会引发另一个非“int x”异常吗?添加一个 printf("going to throw 50\n");在您的代码中,看看它是否被打印出来。还要添加 } catch(...) { printf("some other exception..\n); }. 检查由 empty.addItem() 抛出的任何其他异常。
【解决方案2】:

您的代码没有明显的问题。我能想到没有打印“fail 50”的可能原因有两个:

  1. 程序控制实际上永远不会到达try 块——通过在throw 之前放置一个打印语句来仔细检查。

  2. empty.addItem() 正在引发不是int 的异常。您很可能会注意到您的程序神秘地失败并出现未捕获的异常。

【讨论】:

    猜你喜欢
    • 2013-09-22
    • 1970-01-01
    • 2021-02-04
    • 2016-07-18
    • 2012-03-15
    • 1970-01-01
    • 2017-07-12
    • 2010-09-22
    • 1970-01-01
    相关资源
    最近更新 更多