C ++ - Noob - 简单的尝试/捕获

时间:2012-02-22 01:01:47

标签: c++ exception-handling

我正在尝试编写一个简单的try / catch语句,但我一直在编译错误。这是我的代码:

int divide(int x, int y)
{
    if (y == 0) {
        throw 0;
    }
    return x / y;
}

Exception::Exception()
{
    try {
        cout << divide(10, 0) << "\n"; 
    } catch (int e) {
        cout << "Cannot divide by " << e << "\n";
    } 
}

我收到以下编译错误:

LNK2019:函数“public: _thiscall异常::”例外(无效)“(?? 0Exception @@ @ QAE XZ)

LNK1120:1个未解析的外部

2 个答案:

答案 0 :(得分:5)

我的神奇远程调试技巧告诉我divideException的成员,但是你在全局命名空间中定义它。前缀divideException::,la

int Exception::divide(int x, int y)
{
    if (y == 0) {
        throw 0;
    }
    return x / y;
}

答案 1 :(得分:3)

您得到的是链接器错误。您提到divideException类的成员函数,但忘记了它的实现。只需使用::限定通话费用。

 cout << ::divide(10, 0) << "\n";  // Take the function at global scope
                                   // This still leaves the member function implemenation
                                   // unimplemented which is bad though.

int Exception :: divide(int x, int y) { .... }