c++ - C ++:如果括号为空,为什么不抛出错误对象?
问题描述
我是异常处理的新手,所以我不明白为什么在这段代码中,如果我用空括号创建了一个对象,它不会抛出异常对象,但如果我将参数传递给构造函数,它就可以正常工作。如果这与构造函数的类型有关,您能否提及不同类型的构造函数,以便我可以用谷歌搜索它们。提前致谢。
class test {
public:
class error {};
test(){
throw error();
}
};
int main()
{
try {
test p();
}
catch(test::error)
{
cout <<"Error caught!"<< endl;
}
return 0;
}
解决方案
令人烦恼的解析test p();
(这是函数声明)。
使用test p{};
ortest p;
代替
推荐阅读
- javascript - 使用 Jquery 进行注释
- java - 将可执行文件复制到实时系统
- ocaml - 沙丘上一些可执行文件
- mysql - 按日期月份分组多个表
- git - git 无法添加或签出某些文件
- java - 异常 Exception 与 SpringAMQPMessageSource.onMessage(Message, Channel) Axon 中的 throws 子句不兼容
- google-cloud-platform - 为什么 Cloud Endpoint 不跟踪我的 API?
- javascript - 在 Android 设备(USB)上运行 NativeScript Vue
- office-js - 不允许弹出窗口时 displayNewMessageForm 不起作用
- java - 带有 AlphaComposite 和 Color 的 Java2D 灯光