C++中的异常,打印了奇怪的数字
exception in C++ with weird number printed
我的程序中有以下代码:
//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;
,因为只有在没有返回正确的密钥的情况下才能到达那里。
相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- 检查输入是否不是整数或数字
- 处理多个异常集合的C++方法
- 我在c++代码中生成了一个运行时#3异常
- 如何(从固定列表中)选择一个数字序列,该序列将与目标数字相加
- 孤立代码块在结构中引发异常
- C++中的赋值发生,尽管右侧出现异常
- 如何用数字处理log(0)
- 最高有效数字侧的第N位
- 尝试将数字写入二进制文件时引发异常
- 引发未经处理的异常:简单 C++ 程序中的读取访问冲突,动态增加数组长度以存储数字
- 当数字可能超出C++中特定数据类型的范围时如何处理异常?
- 当矢量有 6 个元素(C++、矢量、循环)时,程序打印异常数字
- 0x80020009 OLE异常访问除0以外的任何数字
- 关于C中浮点算术的异常,从本身中减去数字
- C++中的异常,打印了奇怪的数字
- 未设置变量并返回异常数字
- 在waitpid()之后来自WTERMSIG宏的异常信号数字
- 在c++中,如何编写一个捕获超过10的任何数字的异常?