C++中的异常,打印了奇怪的数字

exception in C++ with weird number printed

本文关键字:数字 异常 C++ 打印      更新时间:2023-10-16

我的程序中有以下代码:

//Get key given pionter
int SLL::Get(node* pt){
    try{
        if(pt!=NULL){
            node* temp = pt;
            return temp->key;
        }
        else {
            throw "Access the NULL pointer!!";
        }
    }
    catch(const char *s){
        cout << s << endl;
        cout << "Invalid input!" << endl;
    }
}

当我测试异常情况(代码块)时,它给了我以下输出

Access the NULL pointer!!
Invalid input!
4704284

我不明白这个号码是从哪里来的?有趣的是,无论我运行了多少次这个测试,数字都是一样的,这意味着它可能不是某个随机地址。如果我测试了非例外的情况,这三条线一起消失了。

所以,我不知道到底发生了什么。希望有人能帮我解释一下。谢谢

此函数应该返回一个int,但您的异常处理路径没有return语句。很可能是调用它的代码打印出了"垃圾"值。

我想有什么东西这样调用这个函数:

key = whatever->Get();
cout << key << endl; 

并且该代码正在打印出SLL::Get()返回的上述幻数。

"解决"这个问题的一种方法是在SLL::Get()的末尾添加return -1;,因为只有在没有返回正确的密钥的情况下才能到达那里。